我在TABLE_A中有一个GMT中的日期和时间变量。我想在TABLE_B中插入这个日期和时间,但我希望根据时区和夏季/冬季时间调整插入的值。 那就是:
INSERT into TABLE_A (ADJUSTED_DATE_AND_TIME)
SELECT GMT_DATE_AND_TIME [Perform proper adjustments here..?]
FROM TABLE_A
我可以这样做吗?在那种情况下,我该怎么写?
感谢。
答案 0 :(得分:0)
我认为你可以简单地转换GMT / UTC时间。但是,您必须获取时区的完整区域名称。
SELECT TIMESTAMP '2014-06-10 12:00:00 +00:00' AT TIME ZONE 'Europe/Zurich' AS summer FROM dual;
SUMMER
---------------------------------------
10.06.2014 14:00:00.000000000 +02:00
SELECT TIMESTAMP '2014-12-10 12:00:00 +00:00' AT TIME ZONE 'Europe/Zurich' AS winter FROM dual;
WINTER
---------------------------------------
10.12.2014 13:00:00.000000000 +01:00
由于您的源值是数据类型DATE
,因此您必须执行以下步骤。
DATE
投放到TIMESTAMP
FROM_TZ
AT TIME ZONE '...'
DATE
写在一个声明中
select
CAST(FROM_TZ(CAST(sy_sttime AS TIMESTAMP), 'UTC') AT TIME ZONE 'Europe/Zurich' AS DATE)
from sy_request
或者说不太清楚
select
CAST((CAST(sy_sttime AS TIMESTAMP) AT TIME ZONE 'UTC') AT TIME ZONE 'Europe/Zurich' AS DATE)
from sy_request