【问题标题】:Convert a date with timezone to GMT将带时区的日期转换为 GMT
【发布时间】:2014-02-18 18:15:34
【问题描述】:

我有一个带时间的日期(例如 2014 年 3 月 21 日 08:00:00)和一个时区(“例如美国/丹佛”),我想将此日期转换为 GMT 时间;我怎么能这样做?

我也想知道Oracle是否采取夏令时?它会自动处理吗?是否以同样的方式支持所有时区?

注意:“从时区”在每种情况下都会改变;所以,它并不总是美国/丹佛

【问题讨论】:

  • 您想转换为 GMT 还是 UTC?或者,GMT 时间为 GMT,夏季为 BST (GMT + 1)?
  • GMT 和 UTC 相同,现在称为 UTC @Ben
  • 我想把它转换成 GMT @Ben
  • 这几乎总是在应用程序代码中比在数据库中做得更好。你能提供一些上下文吗?
  • 有一个这样做的例子in the documentation Matt 链接到。 Oracle 应自动考虑 DST。

标签: sql oracle datetime oracle11g timezone


【解决方案1】:

以下是您可以使用的功能列表:

BEGIN
    DBMS_OUTPUT.PUT_LINE('Timestamp: ' || TO_TIMESTAMP('2014-03-21 08:00:00', 'yyyy-mm-dd hh24:mi:ss') );
    DBMS_OUTPUT.PUT_LINE('Timestamp with timezone: ' || FROM_TZ(TO_TIMESTAMP('2014-03-21 08:00:00', 'yyyy-mm-dd hh24:mi:ss'), 'America/Denver') );
    DBMS_OUTPUT.PUT_LINE('Timestamp at UTC: ' || FROM_TZ(TO_TIMESTAMP('2014-03-21 08:00:00', 'yyyy-mm-dd hh24:mi:ss'), 'America/Denver') AT TIME ZONE 'UTC' );
END;

Timestamp:               2014-03-21 08:00:00.000000000
Timestamp with timezone: 2014-03-21 08:00:00.000000000 -06:00
Timestamp at UTC:        2014-03-21 14:00:00.000000000 +00:00

像“美国/丹佛”这样的长时区名称会考虑 DST。如果您指定时区通用,如“-07:00”,则不考虑 DST。

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 2021-05-02
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多