如何使用特定区域的值更新TIMESTAMP WITH TIME ZONE列?

时间:2015-02-05 07:12:36

标签: sql oracle timezone

我的表中有一个TIMESTAMP WITH TIME ZONE列。 我想在各自的时区使用systimestamp更新所有值。

我尝试了很多方法,但是我无法从值中动态获取时区信息,并在单个查询中更新相同的信息。

我将在这里提供必要的结构。

create table TIMEZONE_TEST
( COLUMN_ONE timestamp with time zone
);

insert into TIMEZONE_TEST values (systimestamp at time zone 'US/Pacific');
insert into TIMEZONE_TEST values (systimestamp at time zone 'Asia/Tokyo');
insert into TIMEZONE_TEST values (systimestamp at time zone 'Asia/Kuala_Lumpur');
insert into TIMEZONE_TEST values (systimestamp at time zone 'Asia/Singapore');
commit;

我需要使用特定时区的systimestamp更新所有值。

类似

update TIMEZONE_TEST
set COLUMN_ONE = systimestamp at time zone '<TIMEZONE_NAME of the value>';

感谢您提前给予的帮助。

2 个答案:

答案 0 :(得分:0)

我不确定我是否正确地提出了你的问题,但我认为应该是这个问题:

UPDATE TIMEZONE_TEST SET 
COLUMN_ONE = FROM_TZ(CAST(SYSTIMESTAMP AS TIMESTAMP), EXTRACT(TIMEZONE_REGION FROM COLUMN_ONE));

答案 1 :(得分:0)

所需的答案是

UPDATE TIMEZONE_TEST
SET COLUMN_ONE = SYSTIMESTAMP at time zone EXTRACT(TIMEZONE_REGION FROM COLUMN_ONE);

我修改了@Wernfried给出的答案。