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”