Oracle 在看似有效的格式上给出 ORA-01821
Oracle giving ORA-01821 on a format that appears to be valid
通话中
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
为什么这不起作用?
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 只是删除时区信息 w/o 错误。
https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch4datetime.htm#NLSPG238
通话中
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
为什么这不起作用?
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 只是删除时区信息 w/o 错误。
https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch4datetime.htm#NLSPG238