【发布时间】:2017-10-03 16:23:45
【问题描述】:
我意识到我可以使用 to_char 和 to_date 的组合以及什么不是解决方法,但我试图弄清楚为什么这不起作用。我正在使用 Oracle 12.1
select '2016-10-01'
from dual
union all
select to_char(2016)||'-10-01'
from dual;
联合的每一边产生相同的输出:2016-10-01。如果我然后尝试使用 ANSI 日期语法(如此处所述:http://blog.tanelpoder.com/2012/12/29/a-tip-for-lazy-oracle-users-type-less-with-ansi-date-and-timestamp-sql-syntax/),它只适用于第一个,而不是第二个:
select date '2016-10-01'
from dual
返回:2016 年 10 月 1 日
但如果我试试这个:
select date to_char(2016)||'-10-01'
from dual;
我上车:
ORA_00936 缺少表达式错误。
我可以编写一个变通方法,但我很难理解为什么一个有效而另一个无效。
【问题讨论】:
-
date是定义日期常量的关键字。你没有跟随它的常量。