この問題は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
関連: