ORACLE TIMESTAMP FORMAT MASK

时间:2014-09-12 07:53:13

标签: sql oracle

也许有人可以帮助我: 我以该格式输入日期

'2014-06-26T14:36:37.000+0000'

我希望在 TIMESTAMP(3)WITH TIME ZONE 类型的 TIMECOL 列中插入此日期, 所以我这样做:

 INSERT INTO MY_TABLE(ID,NAME,TIMECOL) VALUES (NULL, 'TESTN',TO_TIMESTAMP('2014-06-26T14:36:37.000+0000', 'YYYY-MM-DD"T"HH24:MI:SS.FF3+TMZ'));

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

我需要使用哪种口罩?

2 个答案:

答案 0 :(得分:2)

我猜您需要使用TO_TIMESTAMP_TZ才能获得带时区的时间戳。以下作品:

select TO_TIMESTAMP_TZ('2014-06-26T14:36:37.000+0000', 'YYYY-MM-DD"T"HH24:MI:SS.FF3 TZD') from dual

所以,你的INSERT可能是,

INSERT INTO MY_TABLE(ID,NAME,TIMECOL)
VALUES (NULL,
        'TESTN',
        TO_TIMESTAMP_TZ('2014-06-26T14:36:37.000+0000', 'YYYY-MM-DD"T"HH24:MI:SS.FF3 TZD'));

答案 1 :(得分:1)

这个Oracle#$ %% ^的问题在于TO_TIMESTAMP_TZ和FROM_TZ的格式很糟糕。如果要以实际使用的格式将值插入日期字段,请尝试以下操作。您在Oracle支持论坛上找不到这个。

- 真实格式

SELECT to_date(to_char(from_tz(CAST (sysdate AS TIMESTAMP), 'US/Eastern') AT TIME ZONE 'UTC', 'MM/DD/YYYY HH12:MI:SS'), 'MM/DD/YYYY HH12:MI:SS') as MyDateToInsert from dual;