我尝试在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
它不喜欢这种格式。如果我删除+,也无法正常工作。
答案 0 :(得分:3)
如评论中所述,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
格式掩码,尽管它们使函数崩溃了如果使用的话。