Oracle:TO_DATE 无法解析 TO_CHAR 的结果
Oracle: TO_DATE can not parse result of TO_CHAR
我尝试在 Oracle 12 上解析时间字符串。我认为问题是 TZH。
SQL> select to_char(current_timestamp, 'DD.MM.YYYY HH24:MI TZH') from dual;
TO_CHAR(CURRENT_TIME
--------------------
05.07.2018 16:55 +02
但反方向不起作用...
SQL> select TO_DATE('05.07.2018 16:53 +02', 'DD.MM.YYYY HH24:MI TZH') from dual;
select TO_DATE('05.07.2018 16:53 +02', 'DD.MM.YYYY HH24:MI TZH') from dual
*
FEHLER in Zeile 1:
ORA-01821: Datumsformat nicht erkannt
格式不喜欢。如果我删除 +.
也不起作用
如评论中所述,TO_DATE
不适用于时区格式掩码。相反,使用 TO_TIMESTAMP_TZ
,它接受这个:
SELECT TO_TIMESTAMP_TZ('05.07.2018 16:53 +02:00', 'DD.MM.YYYY HH24:MI TZH:TZM')
FROM dual;
这会引起混淆也就不足为奇了,因为我在网上看到的关于 TO_DATE
的大部分文档都提到了 TZH
和 TZM
格式掩码,尽管它们会崩溃如果使用函数。
我尝试在 Oracle 12 上解析时间字符串。我认为问题是 TZH。
SQL> select to_char(current_timestamp, 'DD.MM.YYYY HH24:MI TZH') from dual;
TO_CHAR(CURRENT_TIME
--------------------
05.07.2018 16:55 +02
但反方向不起作用...
SQL> select TO_DATE('05.07.2018 16:53 +02', 'DD.MM.YYYY HH24:MI TZH') from dual;
select TO_DATE('05.07.2018 16:53 +02', 'DD.MM.YYYY HH24:MI TZH') from dual
*
FEHLER in Zeile 1:
ORA-01821: Datumsformat nicht erkannt
格式不喜欢。如果我删除 +.
也不起作用如评论中所述,TO_DATE
不适用于时区格式掩码。相反,使用 TO_TIMESTAMP_TZ
,它接受这个:
SELECT TO_TIMESTAMP_TZ('05.07.2018 16:53 +02:00', 'DD.MM.YYYY HH24:MI TZH:TZM')
FROM dual;
这会引起混淆也就不足为奇了,因为我在网上看到的关于 TO_DATE
的大部分文档都提到了 TZH
和 TZM
格式掩码,尽管它们会崩溃如果使用函数。