改写,因为我像这样使用日期:
date'2010-04-10'
,结果可能是2010年4月10日(例如2010年10月4日)吗?
更新我听到你和博士说的话。但...
当批处理作业运行时,使用硬编码的date'yyyy-mm-dd':s,它会导致某些(非确定性)计算失败。在PL / SQL Developer 从不中运行失败的SQL语句会产生相同的错误值。
首先,我运行相同的计算(数十万),日期''日期文字被to_date('','')函数替换,一切正常。
然后,我使用了NHibernate及其LINQ提供程序,并完全取代了手工制作的SQL。 ......一切正常...... NHibernate生成了一个''日期文字,包括时间部分,BTW。
更新我的一位同事写了一些代码,可以重现我们环境中的错误。他在Oracle论坛上发布了他的发现(包括代码):https://forums.oracle.com/forums/thread.jspa?threadID=2304569&tstart=0
更新根据zerkms的回答改变了标题。
答案 0 :(得分:13)
它不是功能,而是日期文字。并且,是的,无论任何oracle设置,它始终匹配YYYY-MM-DD
。
答案 1 :(得分:10)
这是link to Oracle 10g SQL reference, on datetime literals。摘录:
ANSI日期文字不包含时间部分,必须指定 正是以这种格式
('YYYY-MM-DD')
。或者你可以指定 Oracle日期值,如以下示例所示:
TO_DATE('98-DEC-25 17:30','YY-MON-DD HH24:MI')