【问题标题】:Date transformation in SQL (Oracle)SQL (Oracle) 中的日期转换
【发布时间】:2021-01-28 15:25:18
【问题描述】:

我有一个带有日期字段的表,在 DDL 中,ORDERDATE 设置为日期。

在表格中,日期如下所示:

ORDERDATE
2020-02-11 00:00:00
2021-01-19 00:00:00
2020-10-27 00:00:00
2020-01-09 00:00:00

我想转换为 MM/DD/YYYY,如果可能的话,最好在表上运行更新?

我试过了:

SELECT to_date(to_char(trunc(OrderDate), 'DD/MM/YYYY'))
FROM ORDER_TABLE;

但收到错误“SQL 错误 [1843] [22008]: ORA-01843: not a valid month”

非常感谢您的帮助,我期待您的回复并了解错误!

非常感谢, 阿杰

【问题讨论】:

  • Oracle 中的“日期”始终包含时间部分。但您的问题甚至与此无关,而是关于如何显示日期。要更改日期的显示方式,请更改控制该参数的参数:alter session set nls_date_format = 'mm/dd/yyyy' 请注意,某些界面程序会单独存储您的首选项,因此您必须在软件中找到它并在那里进行更改。但是,在所有情况下,这都是控制日期显示的问题,而不是更改表格中的数据。
  • DATE 值没有格式。所以你不能改变它开始
  • 为了进一步澄清区别(“日期”和“用于显示目的的日期字符串表示之间”) - 假设您的日期当前显示为 2021 年 1 月 28 日,而您更喜欢显示 01/28 /21。它们是相同的date,因此它们在数据库中的存储方式相同(在date 数据类型中);只是显示方式不同,不受存储数据的控制,由“转字符串”参数控制。如果你想完全控制,你可以写select to_char(orderdate, 'mm/dd/yyyy')而不是select orderdate,然后你就不用依赖任何默认值了。

标签: sql oracle date transformation


【解决方案1】:

您已经将 ORDERDATE 作为 DATE 存储在数据库中,因此您只需在报告它时将其转换回字符串(如果您想看到它的格式很好)

SELECT TO_CHAR(OrderDate, 'DD/MM/YYYY') FROM ORDER_TABLE;

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 2013-04-14
    • 2012-11-04
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多