この問題はAmazonRDSとは関係がないようです。PostgreSQLで使用されている規則に関係しています。この場合、あなたは タイムゾーン名を持っている 後方に。 'UTC-01'
を意味します 'UTC+01'
と書く場所 ストライク> 。
したがって、SET TIME ZONE
に使用されるタイムゾーン文字列 (およびSHOW timezone
の表示 、それに応じて)またはAT TIME ZONE
コンストラクトは反対の記号を使用します timestamp
に表示される内容の (with time zone
)リテラル!これは、一方ではISOとSQL標準、もう一方ではPOSIXの間の非常に残念な不一致です。 (POSIXが原因だと思います。)参照:
ただし、 'CET'
または'UTC-01'
どちらもまだ潜在的に間違っている 夏時間のルールを採用していないため、パリの場合
(DSTは人類の歴史の中で最もモロニックな概念の1つです。)
パリ(ヨーロッパのほとんどのように)は冬の間CETを使用し、夏の間CESTを使用します。 'CET'
を使用したテスト たまたま11月に働いた。夏に同じことをしようとすると、間違った結果になります。
安全のため、常にタイムゾーン名を使用してください 'Europe/Paris'
、DSTルールを考慮します。通話料金は高くなります。
関数current_time
タイムゾーン設定に必要な場合は、DSTルールが考慮されます。しかし、'UTC-01'
プレーンな時間オフセットです。データ型time with time zone
を使用したことはありません またはcurrent_time
そもそも。もう一度マニュアル:
検討してください:
SELECT '2016-06-06 00:00+0'::timestamptz AT TIME ZONE 'UTC+01' AS plus_wrong
, '2016-06-06 00:00+0'::timestamptz AT TIME ZONE 'UTC-01' AS minus_right
SELECT '2016-01-01 00:00+0'::timestamptz AT TIME ZONE 'CET' AS cet_winter
, '2016-06-06 00:00+0'::timestamptz AT TIME ZONE 'CEST' AS cest_summer
, '2016-06-06 00:00+0'::timestamptz AT TIME ZONE 'CET' AS cet_no_dst -- CET wrong!
SELECT '2016-06-06 00:00+0'::timestamptz AT TIME ZONE 'Europe/Paris' AS paris_summer
, '2016-01-01 00:00+0'::timestamptz AT TIME ZONE 'Europe/Paris' AS paris_winter
関連: