【问题标题】:How to convert Time string in UTC to CST in Oracle如何将UTC中的时间字符串转换为Oracle中的CST
【发布时间】:2019-04-02 17:04:37
【问题描述】:

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

所以基本上我需要这个查询的输出,用 SYSTIMESTAMP 替换为 UTC TZ 格式的时间字符串。 选择 TO_CHAR(SYSTIMESTAMP ,'YYYY-MM-DD"T"HH24:MI:SS.FF3TZH:TZM') CREATEDTIME from dual;

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

选择 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 查询。

【问题讨论】:

  • 你的问题不清楚。您的输入是 2019 年 1 月 2 日上午 11:53 - 在哪个时区?您说想要的输出与输入具有相同的日期和时间;如果您要从 UTC 转换为 CST,则情况并非如此,对吗?最好准确地显示输入(很可能它周围没有双引号)及其数据类型(是字符串吗?)和所需的输出(字符串?当然不是双引号它,除非这是您的问题要求的一部分)。
  • 另请参阅how to format your posts

标签: oracle timestamp


【解决方案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.

【讨论】:

  • 感谢您的回答,但我的要求是在 CST TZ 中以 2019-04-02T11:53:59.269-05:00 格式获取 TS -05:00 或 -6:00基于夏令时。所以我从平面文件中读取UTC时间戳字符串,我需要在SQL查询中使用它以上述格式将其转换为CST TZ,然后将其传递给另一个验证格式并处理数据的程序。
  • 感谢@PrateekShrivastava。好的将编辑为该格式。
猜你喜欢
  • 2021-04-10
  • 1970-01-01
  • 2021-08-22
  • 2014-05-11
  • 2018-11-08
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
  • 2012-08-04
相关资源
最近更新 更多