【发布时间】:2015-10-28 23:52:09
【问题描述】:
我有以下疑问:
SELECT to_date(to_char(to_date('01-FEB-1949'))) FROM DUAL;
/*this returns 2/1/2049. */
SELECT to_date(to_char(to_date('01-FEB-1949'),'dd-MON-yyyy')) FROM DUAL;
/*this returns 2/1/1949.*/
为什么第一个返回年份2049而不是1949?
通过谷歌搜索,我发现我可以通过更改注册表上的 key 来“强制”客户日期格式成为一种愿望:
KEY_OraClient11g_home1
NLS_DATE_FORMAT : YYYY/MM/DD
【问题讨论】:
-
您的问题中显示的 NLS_DATE_FORMAT 是产生 1949 年结果的那个吗?
-
不,我添加了密钥,但仍然得到相同的结果
-
如果 NLS_DATE_FORMAT 为 'YYYY/MM/DD',我希望你会得到一个格式为 '2049/02/01' 的日期。检查 TOAD 的配置中是否存在导致其使用“RR”或“RRRR”年份格式格式化日期的内容(有关 TO_CHAR 日期格式模型的文档,请参阅here)。
标签: sql oracle datetime oracle11g toad