タイムゾーンオフセットを追加で保存する必要があります timestamp
に 。
@Milenがすでに説明したように(そしてマニュアル
にリンクされています ):timestamp
特定の時点のみを(抽象的な値として)保存します。タイムゾーン修飾子はありません 保存すると、timestamp
の調整にのみ役立ちます UTC
に関連して 。
次のデモを検討してください:
-- DROP TABLE tbl;
CREATE TEMP TABLE tbl (id int, myts timestamptz, mytz interval);
INSERT INTO tbl VALUES
(1, now() , EXTRACT (timezone from now()) * interval '1s')
,(2, '2012-01-01 00:00-05', interval '-5h')
,(3, '2012-01-01 00:00+04', interval '4h')
,(4, '2012-11-11 20:30+03', interval '3h');
SELECT *
,(myts AT TIME ZONE mytz)::text
|| CASE WHEN mytz > '0:0' THEN '+' ELSE '' END
|| to_char(mytz, 'FMHH24:mi') AS timestamp_at_origin
FROM tbl;
ローカルで実行して確認してください。 <の詳細に特に注意してください。強い>タイムゾーン
構築し、(ローカル!)timestamp with time zone
からタイムゾーンを抽出する方法 。now()
timestamp with time zone
を返します またはtimestamptz
略して。
EXTRACT (timezone from now()) * interval '1s'
timestamp_at_origin
起点で見たタイムゾーンのタイムスタンプを表示します。私があなたの質問を理解したなら、それがあなたが探しているものです。
フォーマットをさらに改善することができます。
この