Helaas biedt PostgreSQL geen gegevenstype voor tijdzones, dus u moet waarschijnlijk text
gebruiken .
interval
lijkt op het eerste gezicht een logische optie, en het is is geschikt voor sommige toepassingen. Het houdt echter geen rekening met zomertijd en houdt ook geen rekening met het feit dat verschillende regio's in dezelfde UTC-offset verschillende DST-regels hebben.
Er is geen 1:1-toewijzing van UTC-offset terug naar tijdzone.
Bijvoorbeeld de tijdzone voor Australia/Sydney
(Nieuw-Zuid-Wales) is UTC+10
(EST
), of UTC+11
(EDT
) tijdens de zomertijd. Ja, dat is hetzelfde acroniem EST
die de VS gebruikt; acroniemen voor tijdzones zijn niet uniek in de tzdata-database, daarom heeft Pg de timezone_abbreviations
instelling. Erger nog, Brisbane (Queensland) ligt op bijna dezelfde lengtegraad en bevindt zich in UTC+10 EST
... maar heeft geen zomertijd, dus soms is het -1
verschoven naar New South Wales tijdens NSW's DST.
(Bijwerken :Meer recentelijk heeft Australië een A
. aangenomen prefix, dus het gebruikt AEST
als TZ-acroniem in de oostelijke staten, maar EST
en WST
blijven in gemeenschappelijk gebruik).
Veel verwarrend?
Als alles wat u hoeft op te slaan een UTC-offset is dan een interval
is gepast. Als u een tijdzone wilt opslaan , sla het op als text
. Het is op dit moment lastig om te valideren en om te zetten naar een tijdzone-offset, maar het gaat in ieder geval om met DST.