【问题标题】:PL/SQL Date InsertPL/SQL 日期插入
【发布时间】:2012-10-15 12:14:50
【问题描述】:

我正在以“dd/mm/yyyy”格式触发插入查询,但它将日期存储为 MM/DD/YYYY 格式。 我只想知道为什么会这样?

这是我正在使用的插入查询。

insert into txnblackout(endtime,idtxn,blackoutflag,starttime,startdate,typeuser,id_entity,idsequence,idapp,enddate) values('83520','LGN','D','7920',TO_DATE('30/12/2012','dd/mm/yyyy'),'ECU','B001','4','A1',TO_DATE('30/12/2012','dd/mm/yyyy'))

【问题讨论】:

    标签: database date plsql plsqldeveloper


    【解决方案1】:

    如果您不想更改 Windows 日期格式(按照 Colin 't Hart 的建议),您可以

    • 在查询中使用明确的 to_char() 日期格式(由 Robert Hanson 建议)
    • 设置您的客户端 NLS 设置
    • 配置您的客户端(因为您似乎正在使用 PL/SQL 开发人员): 工具 -> 首选项 -> NLS 选项 -> 日期 -> 检查用户定义 + 输入您的格式

    就我个人而言,我会设置客户端 NLS 设置。

    【讨论】:

      【解决方案2】:

      这是一个前端问题:它以该格式显示日期。因为它们是日期字段,所以日期确实代表了您插入的日期。

      我注意到屏幕截图右下角的日期以 MM/DD/YYYY 的顺序显示。在 Windows 中更改此设置,它很可能会在您的前端工具中正确显示。

      【讨论】:

        【解决方案3】:

        重要的一点可以通过您的插入来凸显,其中包括“TO_DATE('30/12/2012','dd/mm/yyyy')”。这会将字符串“30/12/2012”转换为特定于数据库的内部日期对象格式。您无法控制底层存储格式。但是,您可以控制的是,当您调用 select 时,如何使用日期格式化函数将内部日期对象转换回字符串。

        select to_char(some_date, 'dd/mm/yyyy') my_date from some_table;
        

        在您引用的可视化界面中,它只是显示默认日期到字符串的转换。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多