我需要添加秒数并减去类型为 TIMESTAMP WITH TIMEZONE 的变量,但是,据我了解,向此类数据添加数字会导致有关时区的信息丢失,可能是因为它已转换为 DATE 类型
那是:
SELECT FROM_TZ(
TO_TIMESTAMP(
TO_DATE('03/09/2012 2:30:30','DD/MM/YYYY HH:MI:SS')
)
, 'America/Chicago')
FROM DUAL;
给出:
03/09/2012 00:00:00, -05:00
然后
SELECT FROM_TZ(
TO_TIMESTAMP(
TO_DATE('03/09/2012 2:30:30','DD/MM/YYYY HH:MI:SS')
)
, 'America/Chicago') + 1/24 -- add 1 hour
FROM DUAL;
给
03/09/2012 01:00:00
并丢失时区信息。但
SELECT FROM_TZ(
TO_TIMESTAMP(
TO_DATE('03/09/2012 2:30:30','DD/MM/YYYY HH:MI:SS'))
, 'America/Chicago') + INTERVAL '1' hour
FROM DUAL;
正确给出
03/09/2012 01:00:00,000000000 -05:00
但是 INTERVAL.. 语法需要一个 char 常量,所以我不能将它与变量一起使用。
如何在保留时区信息的同时使用 TIMESTAMP WITH TIME ZONE 数据类型执行这种算术?
TIA