sql >> Database >  >> RDS >> PostgreSQL

Wat is een geschikt gegevenstype om een ​​tijdzone op te slaan?

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.



  1. PHP/MySQL:UUIDS opslaan en ophalen

  2. Back-up van PostgreSQL met pg_dump en pg_dumpall

  3. Hoe vindt u niet-numerieke waarden in een kolom in MySQL

  4. Cakephp haalt informatie op uit database