【问题标题】:How do I convert an oracle timestamp value from UTC to EST in a select statement?如何在 select 语句中将 Oracle 时间戳值从 UTC 转换为 EST?
【发布时间】:2016-03-02 22:24:33
【问题描述】:

您好,我有一个包含时间戳数据的日期字段 (Open_Time)。此列中的时间以 UTC 为单位。我想选择该列并将其转换为 EST 并将其插入到另一个表中。我希望它在原始时间戳的时间是 EST(根据它是哪一天和哪一年考虑夏令时)。我一直在阅读 oracle 中的各种时区功能,但大多数似乎都专注于更改我不需要做的数据库时区。 (Open_Time) 字段始终以 UTC 记录。

BLUF:我需要选择一个根据UTC时间记录的时间戳字段(Open_Time)并将其转换为(Open_Time)时的EST。谢谢。

【问题讨论】:

    标签: oracle


    【解决方案1】:

    如果您使用的是TIMESTAMP WITH TIME ZONE 数据类型:

    Oracle 设置

    CREATE TABLE Table_Name (
      open_time TIMESTAMP WITH TIME ZONE
    );
    
    INSERT INTO Table_Name VALUES ( SYSTIMESTAMP AT TIME ZONE 'UTC' );
    

    查询

    SELECT open_time AT TIME ZONE 'UTC' AS utc,
           open_time AT TIME ZONE 'EST' AS est
    FROM   Table_Name;
    

    输出

    UTC                                 EST                               
    ----------------------------------- -----------------------------------
    02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
    

    或者如果您只是使用TIMESTAMP 数据类型:

    Oracle 设置

    CREATE TABLE Table_Name (
      open_time TIMESTAMP
    );
    
    INSERT INTO Table_Name VALUES ( SYSTIMESTAMP );
    

    查询

    SELECT CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'UTC' AS utc,
           CAST( open_time AS TIMESTAMP WITH TIME ZONE ) AT TIME ZONE 'EST' AS est
    FROM   Table_Name;
    

    输出

    UTC                                 EST                               
    ----------------------------------- -----------------------------------
    02-MAR-16 22.41.38.344809000 UTC    02-MAR-16 17.41.38.344809000 EST    
    

    【讨论】:

    • 很棒的答案,非常感谢您抽出时间如此简洁地列出。
    • 注意时区EST 考虑夏令时,请尝试INSERT INTO Table_Name VALUES (SYSTIMESTAMP + INTERVAL '6' MONTH) AT TIME ZONE 'UTC'); 进行比较。使用区域名称,例如SELECT open_time AT TIME ZONE 'US/Eastern' from ...EST5EDT
    • 我正在使用这个,根据我的检查,这是在做我想要的。谢谢! select i.dtm_open_time ,FROM_TZ(cast(i.dtm_open_time as timestamp), '0:00') AT TIME ZONE 'US/Eastern' from dcc.incident i
    猜你喜欢
    • 1970-01-01
    • 2020-04-03
    • 2021-10-27
    • 1970-01-01
    • 2013-06-16
    • 2021-11-15
    • 2014-05-06
    • 2015-04-13
    • 1970-01-01
    相关资源
    最近更新 更多