0

我有一个来自网络服务的日期,格式为 9999-06-15T00:00:00.000+0000。如何将其保存到 Oracle 12c DB 中表的日期列中。

我努力了

 select to_date('9999-06-15T00:00:00.000+0000', 'YYYY-MM-DDTHH24:MI:SS.fff+0000')
 from dual;

但我收到错误“ORA-01821:日期格式无法识别”

任何帮助深表感谢

4

1 回答 1

0

文字的格式符合timestamp数据类型而不是date数据类型。因此,to_timestamp如果它的格式没有从加号开始的尾随部分,则使用转换就足够了

SELECT TO_TIMESTAMP('9999-06-15T00:00:00.000', 'YYYY-MM-DD"T"HH24:MI:SS.FF3') AS ts      
  FROM dual;

将字母引用T为,并在原始格式掩码中"T"添加后缀.FF3而不是as 。fff有了那个尾随部分,我们需要一个转换WITH TIME ZONE( TO_TIMESTAMP_TZ),它在加号之后有TZH( Time Zone Hour) 和TZM( ) 部分。Time Zone Minute所以,使用

SELECT TO_TIMESTAMP_TZ('9999-06-15T00:00:00.000+0000', 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') AS ts
  FROM dual;

符合您的数据模型。

Demo

于 2020-08-29T12:47:14.797 回答