【发布时间】: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