秒を追加し、タイプ 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 データ型でそのような演算を実行するにはどうすればよいですか?
ティア