【发布时间】:2021-02-18 16:11:52
【问题描述】:
任何 oracle 表中的标准日期格式是 DD-MON-YY,但我仍然想知道以下查询是否会以“DD-MON-YY”格式将日期存储到 reg_date 列中,因为它是 Oracle 标准还是会按照 'FMmonth DD, YYYY' 格式存储?
insert into table (id,name,reg_date)
values (1, 'abc', TO_CHAR(SYSDATE,'FMmonth DD, YYYY') );
【问题讨论】:
-
日期以内部格式存储。其他设置定义了它们的显示方式——它与存储的值无关。
-
"任何 oracle 表中的标准日期格式是 DD-MON-YY" 不正确。 oracle DATE 列是一种内部二进制格式。 (顺便说一句,该格式包括时间,一直到秒)。您提到的 DD-MON-YY 格式是显式或隐式 TO_CHAR 函数将该内部格式转换为日期/时间的字符串表示的结果,用于显示目的。除了前面的参考资料,见edstevensdba.wordpress.com/2011/04/07/nls_date_format
-
从不将日期/时间值存储为字符串,这是一个设计缺陷。始终使用正确的
DATE或TIMESTAMP数据类型,即插入简单的SYSDATE或TRUNC(SYSDATE)