Oracle以看似有效的格式提供ORA-01821

时间:2017-05-23 18:53:24

标签: oracle to-date

致电

SELECT TO_DATE('Mon Sep 22 18:02:41 CDT 2014', 'DY MON DD HH24:MI:SS TZD YYYY') FROM Dual;

我得到了

ORA-01821: date format not recognized
01821. 00000 -  "date format not recognized"

我把these Oracle instructions的格式字符串放在一起。我试过“TZR”和“TZD”都没有用。

DY  Abbreviated name of day.
MON Abbreviated name of month.
DD  Day of month (1-31).
HH24    Hour of day (0-23).
MI  Minute (0-59).
SS  Second (0-59).
TZD Daylight savings information. For example, 'PST'
TZR Time zone region.
YYYY    4-digit year

为什么这不起作用?

1 个答案:

答案 0 :(得分:2)

TO_DATE不支持时区。

我认为您需要使用to_timestamp_TZ()来完成您所追求的目标......

SELECT To_TimeStamp_TZ('Mon Sep 22 18:02:41 2014 CDT', 'DY MON DD HH24:MI:SS YYYY TZD') 
FROM Dual;

给你类似的东西(使用我的NLS参数)

22-SEP-14 06.02.41.000000000 PM AMERICA/CHICAGO

另请注意,数据类型必须是TIMESTAMP WITH TIME ZONE数据类型;或oracle只删除没有错误的时区信息。

https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch4datetime.htm#NLSPG238