【问题标题】:Does Oracle's "date'[yyyy-mm-dd]'" literal always use the yyyy-mm-dd pattern?Oracle 的 "date'[yyyy-mm-dd]'" 文字是否总是使用 yyyy-mm-dd 模式?
【发布时间】:2011-12-02 04:29:51
【问题描述】:

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

date'2010-04-10'

,结果会不会是 2010 年 4 月 10 日(例如 2010 年 10 月 4 日)?

更新 我听到了您和文档的意见。但是……

当批处理作业运行时,使用硬编码的日期'yyyy-mm-dd':s,它会因某些(非确定性)计算而失败。在 PL/SQL Developer 中运行失败的 SQL 语句永远不会产生相同的、不正确的值。

首先,我用 to_date('', '') 函数替换了 date'' 日期文字,运行了相同的计算(数十万次),一切正常。

然后,我使用 NHibernate 及其 LINQ 提供程序,并完全替换了手工编写的 SQL。 ...并且一切正常... NHibernate 产生一个 '' 日期文字,包括时间部分,顺便说一句。

更新我的一位同事写了一些代码,可以在我们的环境中重现错误。他在 Oracle 论坛上发布了他的发现(包括代码):https://forums.oracle.com/forums/thread.jspa?threadID=2304569&tstart=0

UPDATE 根据 zerkms 的回答更改了标题。

【问题讨论】:

    标签: oracle nhibernate plsql oracle10g


    【解决方案1】:

    这是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')

    【讨论】:

      【解决方案2】:

      不是函数,而是日期字面量。而且,是的,它始终与 YYYY-MM-DD 匹配,无论任何 oracle 设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-30
        • 2020-02-24
        • 2016-01-02
        • 1970-01-01
        • 2015-02-11
        • 2020-11-10
        • 2020-12-14
        • 2013-08-31
        相关资源
        最近更新 更多