TIMESTAMP WITH TIME ZONE 値は、年、月、日、時、分、秒、秒の小数位、および協定世界時 (UTC: Coordinated Universal Time) との差異を示す分数を含んでいます。秒以下は 6 桁まで格納されます。
アプリケーションが文字列として TIMESTAMP WITH TIME ZONE 値を取得するときの形式は、timestamp_with_time_zone_format 作成パラメータによって決まります。たとえば、TIMESTAMP WITH
TIME ZONE 値 2010/04/01T23:59:59.999999-6:00 は、timestamp_with_time_zone_format 作成パラメータに従い、アプリケーションに 2010/04/01 23:59:59 -06:00
または April 1, 2010 23:59:59.999999 -06:00 として返されます。
TIMESTAMP WITH TIME ZONE 値には 10 バイトの記憶領域が必要です。
TIMESTAMP WITH TIME ZONE データ型では、DATE 型と同じく 0001 ~ 9999 年の日付を格納できますが、TIMESTAMP WITH TIME ZONE データ型の有効範囲は 1600-02-28 23:59:59
~ 7911-01-01 00:00:00 です。TIMESTAMP WITH TIME ZONE 値では、この範囲より前または後の時間および分の部分は保持されません。
2 つの TIMESTAMP WITH TIME ZONE 値が UTC において同じ時刻を表す場合、適用されている TIME ZONE オフセットに関係なく同じ時刻と見なされます。たとえば、次の文では、結果が同じと見なされるため、Yes が返されます。
SELECT IF CAST('2009-07-15 08:00:00 -08:00' AS TIMESTAMP WITH TIME ZONE) =
CAST('2009-07-15 11:00:00 -05:00' AS TIMESTAMP WITH TIME ZONE)
THEN 'Yes'
ELSE 'No'
END IF;
TIMESTAMP WITH TIME ZONE 値からタイムゾーンオフセットを省略すると、タイムスタンプが日付と時刻を標準時間または夏時間のいずれで表していても、クライアントの現在の UTC オフセットがデフォルト設定されます。たとえば、クライアントが東部標準タイムゾーンに属しており、夏時間が有効なときに次の文を実行した場合、大西洋標準タイムゾーン
(UTC から -4 時間) に該当するタイムゾーンでタイムスタンプが返されます。
SELECT CAST('2009/01/30 12:34:55' AS TIMESTAMP WITH TIME ZONE)
TIMESTAMP WITH TIME ZONE と他のデータ型の比較
TIMESTAMP WITH TIME ZONE 値をタイムゾーン付きではないタイムスタンプと比較することはおすすめしません。これは、クライアントのデフォルトのタイムゾーンオフセットは、クライアントの地理的な場所および日付によって異なるためです。
TIMESTAMP WITH TIME ZONE との変換
TIMESTAMP 値を TIMESTAMP WITH TIME ZONE に変換する場合、クライアントのタイムゾーンが結果のタイムゾーンオフセットに使用されます。つまり、値はその接続に「ローカル」なものであると見なされます。TIMESTAMP
WITH TIME ZONE 値を TIMESTAMP に変換すると、オフセットは廃棄されます。文字列型、日付型、または時刻型以外の型との間の変換はサポートされていません。