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