Problem wydaje się nie mieć związku z Amazon RDS:ma związek z konwencją stosowaną przez PostgreSQL. W takim przypadku tak mieć nazwę strefy czasowej wstecz. Masz na myśli 'UTC-01' gdzie piszesz .'UTC+01'
Z instrukcji :
Tak więc ciąg strefy czasowej używany do SET TIME ZONE (i wyświetlanie SHOW timezone , odpowiednio) lub AT TIME ZONE konstrukcja użyj znaku przeciwnego tego, co jest wyświetlane w timestamp (with time zone ) literały! To bardzo niefortunna różnica zdań między standardem ISO i SQL z jednej strony a POSIX z drugiej. (Myślę, że POSIX jest winny.) Zobacz:
Ale 'CET' lub 'UTC-01' obaj nadal potencjalnie się mylą dla Paryża, ponieważ nie przyjmują zasad czasu letniego pod uwagę.
(DST jest jednym z najbardziej idiotycznych pojęć w historii ludzkości.)
Paryż (jak większość Europy) używa CET zimą i CEST latem. Twoje testy z 'CET' po prostu zdarzyło się pracować w listopadzie. Jeśli spróbujesz tego samego latem, otrzymasz zły wynik.
Aby być bezpiecznym, zawsze używaj nazwy strefy czasowej 'Europe/Paris' , który uwzględnia reguły czasu letniego. Połączenie jest droższe.
Funkcja current_time bierze pod uwagę reguły czasu letniego, jeśli ustawienie strefy czasowej je zakłada. Ale 'UTC-01' jest zwykłym przesunięciem czasowym. Nigdy nie używam typu danych time with time zone lub current_time najpierw. Instrukcja jeszcze raz:
Rozważ:
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
Powiązane:
-
Całkowite ignorowanie stref czasowych w Railsach i PostgreSQL
-
Czas nazwy stref o identycznych właściwościach dają różne wyniki po zastosowaniu do znacznika czasu
-
Przechowywanie strefy czasowej w typie danych „znacznik czasu z strefa czasowa”