Bohužel PostgreSQL nenabízí datový typ časového pásma, takže byste pravděpodobně měli použít text
.
interval
na první pohled vypadá jako logická možnost a je vhodné pro některá použití. Nezohledňuje však letní čas ani skutečnost, že různé oblasti ve stejném offsetu UTC mají různá pravidla DST.
Neexistuje mapování 1:1 z offsetu UTC zpět do časového pásma.
Například časové pásmo pro Australia/Sydney
(New South Wales) je UTC+10
(EST
), nebo UTC+11
(EDT
) během letního času. Ano, to je stejná zkratka EST
které USA používají; Zkratky časových pásem nejsou v databázi tzdata jedinečné, a proto má Pg timezone_abbreviations
nastavení. Horší je, že Brisbane (Queensland) je na téměř stejné zeměpisné délce a je v UTC+10 EST
... ale nemá letní čas, takže někdy je na -1
offset to New South Wales během NSW's DST.
(Aktualizovat :Nedávno Austrálie přijala A
prefix, takže používá AEST
jako jeho východní státy zkratka TZ, ale EST
a WST
zůstávají běžně používány).
Hodně matoucí?
Pokud vše, co potřebujete uložit, je offset UTC pak interval
je vhodné. Pokud chcete uložit časové pásmo , uložte jej jako text
. V tuto chvíli je těžké ověřovat a převádět na posun časového pásma, ale alespoň si poradí s DST.