to_date 函数 pl/sql

发布于 2024-08-26 16:56:36 字数 483 浏览 6 评论 0原文

undefine dates

declare
  v_dateInput VARCHAR(10);
  v_dates DATE;
begin
  v_dateInput := &&dates;
  v_dates := to_date(v_dateInput,'dd-mm-yyyy');
  DBMS_OUTPUT.put_line(v_dates);
end;

不知道为什么每当我运行此代码时,例如输入 03-03-1990,就会出现此错误。

Error report:
ORA-01847: day of month must be between 1 and last day of month
ORA-06512: at line 6
01847. 00000 -  "day of month must be between 1 and last day of month"
*Cause:    
*Action:
undefine dates

declare
  v_dateInput VARCHAR(10);
  v_dates DATE;
begin
  v_dateInput := &&dates;
  v_dates := to_date(v_dateInput,'dd-mm-yyyy');
  DBMS_OUTPUT.put_line(v_dates);
end;

Not sure why whenever I run this code with ,for example , input of 03-03-1990, this error shows up.

Error report:
ORA-01847: day of month must be between 1 and last day of month
ORA-06512: at line 6
01847. 00000 -  "day of month must be between 1 and last day of month"
*Cause:    
*Action:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你是暖光i 2024-09-02 16:56:36

哈,不错的一个。那是因为 &&就地替换变量,因此您的脚本变为:

declare
  v_dateInput VARCHAR(10);
  v_dates DATE;
begin
  v_dateInput := 03-03-1990;
  v_dates := to_date(v_dateInput,'dd-mm-yyyy');
  DBMS_OUTPUT.put_line(v_dates);
end;

请注意缺少引号。 v_dateInput 实际上是“-1990”,因为 oracle 计算的数值是 03 - 03 - 1990。当然,这不适用于给定的格式字符串。

要修复它,您需要

v_dateInput := '&&dates';

Ha, good one. That's because && replaces the variable in-place, so your script becomes:

declare
  v_dateInput VARCHAR(10);
  v_dates DATE;
begin
  v_dateInput := 03-03-1990;
  v_dates := to_date(v_dateInput,'dd-mm-yyyy');
  DBMS_OUTPUT.put_line(v_dates);
end;

Note the absence of quotes. v_dateInput is, effectively, '-1990', because oracle calculates the numeric value of 03 - 03 - 1990. Of course, this doesn't work with the given format string.

To fix it, you need

v_dateInput := '&&dates';
残龙傲雪 2024-09-02 16:56:36

当提示输入日期值时,请确保将其放在单引号中,例如

Enter value for dates: '03-03-1990'

共享并享受。

When prompted to enter a value for dates make sure you put it in single-quotes, e.g.

Enter value for dates: '03-03-1990'

Share and enjoy.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文