如何在select语句中将oracle时间戳值从UTC转换为EST?

时间:2016-03-02 22:24:34

标签: oracle

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

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

1 个答案:

答案 0 :(得分:3)

如果您使用的是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