如何将UTC中的时间字符串转换为Oracle中的CST

时间:2019-04-02 17:04:38

标签: oracle timestamp

我需要将UTC TZ格式的时间戳字符串转换为CST TZ格式,如此处“ 2019-01-02T11:53:59.269-05:00”所示

所以基本上,我需要用TIMES TZ格式的时间字符串替换SYSTIMESTAMP的此查询的输出。  从双中选择TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD“ T” HH24:MI:SS.FF3TZH:TZM')CREATEDTIME;

我尝试了很多东西,但是出错了

选择TO_CHAR(to_timestamp('2019-01-02 11:53:59.759','YYYY-MM-DD HH24:MI:SS.FF3TZH'),'YYYY-MM-DD“ T” HH24:MI: SS.FF3TZH:TZM')从双重创建时间

错误 ORA-01821:日期格式无法识别

请帮助我编写正确的SQL查询。

1 个答案:

答案 0 :(得分:1)

使用TSTZ,您可以在其他时区进行选择。
以下是夏令时和标准时间的一些示例。

常规时间:

SELECT TO_CHAR(TO_TIMESTAMP_TZ('2019-01-02T16:53:59.269 UTC',
                       'YYYY-MM-DD"T"HH24:MI:SS.FF3 TZR') AT TIME ZONE 'AMERICA/CHICAGO',
               'YYYY-MM-DD"T"HH24:MI:SS.FF3TZH:TZM')
    AS CENTRAL_TIME
FROM  DUAL;

结果:

CENTRAL_TIME
2019-01-02T10:53:59.269-06:00


1 row selected.

还有一个夏时制示例:

SELECT TO_CHAR(TO_TIMESTAMP_TZ('2019-04-02T17:35:52.136 UTC',
                               'YYYY-MM-DD"T"HH24:MI:SS.FF3 TZR') AT TIME ZONE 'AMERICA/CHICAGO',
               'YYYY-MM-DD"T"HH24:MI:SS.FF3TZH:TZM')
    AS CENTRAL_TIME
FROM  DUAL;

结果:

CENTRAL_TIME
2019-04-02T12:35:52.136-05:00


1 row selected.