Oracle的“日期'[yyyy-mm-dd]”字面值是否始终使用yyyy-mm-dd模式?

时间:2011-10-06 11:36:53

标签: oracle nhibernate plsql oracle10g

改写,因为我像这样使用日期:

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的回答改变了标题。

2 个答案:

答案 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')