まず、 timestamptzを使用する必要があります timestampの代わりに 複数のタイムゾーンで作業するときはいつでも。問題を完全に回避できます。
詳細:
できます AT TIME ZONEを使用します @NuLoが提案する
のような構成 、可能性があります 動作することもありますが、説明どおりではありません。
AT TIME ZONE タイプtimestampを変換します (timestamp without time zone )からtimestamptz (timestamp with time zone ) およびその逆。 テキスト表現 timestamptzの 値は現在の設定によって異なります コマンドを実行するセッションのタイムゾーンの。これらの2つのtimestamptz 値 100%同一です(同じ時点を示します):
'2015-09-02 15:55:00+02'::timestamptz
'2015-09-02 14:55:00+01'::timestamptz
ただし、テキスト表現はではありません 。表示はさまざまなタイムゾーン用です。この文字列リテラルを取得してtimestampにフィードすると タイプの場合、タイムゾーン部分は無視されます そして、あなたは異なるになってしまいます 値。したがって、COPYを実行すると 元のtimestampと同じタイムゾーン設定のセッションでのステートメント の値は、推奨される操作が発生するためのものです。 働くために。
ただし、クリーンな方法は、正しいtimestampを生成することです。 AT TIME ZONEを適用することで始まる値 2回 :
SELECT event AT TIME ZONE 'my_target_tz' AT TIME ZONE 'my_source_tz', ...
FROM logtable
ORDER BY event desc;
'my_target_tz' は「独自のタイムゾーン」であり、'my_source_tz' 例のクラウドサーバーのタイムゾーン。 DSTが尊重されるようにするには、タイムゾーン名を使用します 、タイムゾーンの略語ではありません。 ドキュメント:
関連:
または、さらに良いことに、timestamptzを使用します どこでも自動的に正しく機能します。