Desværre tilbyder PostgreSQL ikke en tidszonedatatype, så du bør nok bruge text
.
interval
virker som en logisk mulighed ved første øjekast, og det er egnet til nogle anvendelser. Den tager dog ikke hensyn til sommertid, og den tager heller ikke hensyn til det faktum, at forskellige regioner i samme UTC-offset har forskellige sommertidsregler.
Der er ikke en 1:1-tilknytning fra UTC-forskydning tilbage til tidszonen.
For eksempel tidszonen for Australia/Sydney
(New South Wales) er UTC+10
(EST
), eller UTC+11
(EDT
) i sommertid. Ja, det er det samme akronym EST
som USA bruger; tidszone akronymer er ikke-unikke i tzdata-databasen, hvorfor Pg har timezone_abbreviations
indstilling. Hvad værre er, Brisbane (Queensland) har næsten samme længdegrad og er i UTC+10 EST
... men har ikke sommertid, så nogle gange er det på en -1
offset til New South Wales under NSW's sommertid.
(Opdater :For nylig har Australien vedtaget en A
præfiks, så den bruger AEST
som dets østlige stater TZ akronym, men EST
og WST
forblive i almindelig brug).
Forvirrer meget?
Hvis alt du behøver at gemme er en UTC offset derefter et interval
er passende. Hvis du vil gemme en tidszone , gem det som text
. Det er en smerte at validere og konvertere til en tidszoneforskydning i øjeblikket, men i det mindste klarer det sommertid.