【问题标题】:Oracle: force RR year format unexpectedlyOracle:意外强制 RR 年份格式
【发布时间】:2014-04-26 23:03:49
【问题描述】:

我在 Oracle 表中有一个 DATE 字段。 该字段的填充脚本如下:

TO_DATE('2013-01-02 10:15:51', 'YYYY-MM-DD HH24:MI:SS')

但在我的 SQL Developer 编辑器中,转到表 -> 此表的数据部分,日期看起来像 02/01/13

然后,在 SQL Developer SQL 表中,在一个简单的查询中,我想通过经典的 TO_DATE 转换强制年份显示四位数字:

TO_DATE(field, 'DD/MM/YYYY') AS date_field

它也显示 02/01/13

最后,最糟糕的是在应用程序中,我试图再次强制四位数字,并使用 java SimpleDateFormat 类转换日期,使用 dd/MM/yyyy 模式。 申请日期是02/01/0013

如果我编辑该值并设置 02/01/2013,SQL Developer 会生成此更新语句

TO_DATE('02/01/2013', 'DD/MM/RR')

我不明白为什么要尝试转换为 RR 年份格式。

那么,发生了什么?是一些会话或数据库参数吗?

任何帮助将不胜感激。 问候

【问题讨论】:

    标签: java sql oracle date type-conversion


    【解决方案1】:

    我认为 DD/MM/RR 是 oracle 数据库的默认 NLS_DATE_FORMAT。你可以查询出来看看。

    您的问题不是如何存储数据,而是如何检索数据。

    尝试使用 TO_CHAR() 和带有 mm:ss 的掩码格式来获取准确的时间戳并查看是否获取正确的日期

    【讨论】:

    • 感谢您的回答,但 TO_CHAR() 对我不起作用。必须更改参数 NLS_DATE_FORMAT。
    【解决方案2】:

    如果您能编写您的 SQL Developer 版本,那就太好了。而且它与数据库无关,而只是 SQL Developer 的设置。

    此行为可在首选项(工具/首选项)中自定义:数据库/NLS/日期格式。
    默认设置为 DD.MM.RR,改成你喜欢的。

    【讨论】:

    • 感谢您的想法。它在 SQLDeveloper 中,但不是来自我的应用程序,但您让我着手修复它。我必须在登录后使用触发器设置该参数,最后它可以工作。
    【解决方案3】:

    打开工具-首选项和NLS。

    【讨论】:

    • 感谢您的想法。它在 SQLDeveloper 中,但不是来自我的应用程序,但您让我着手修复它。我必须在登录后使用触发器设置该参数,最后它可以工作。
    猜你喜欢
    • 2022-01-14
    • 2015-02-21
    • 2012-06-16
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2021-07-15
    相关资源
    最近更新 更多