残念ながら、PostgreSQLはタイムゾーンデータ型を提供していないため、おそらくtext
を使用する必要があります 。
interval
一見論理的なオプションのように見えますが、 一部の用途に適しています。ただし、夏時間を考慮していません。また、同じUTCオフセット内の異なる地域が異なるDSTルールを持っているという事実も考慮していません。
UTCオフセットからタイムゾーンへの1:1マッピングはありません。
たとえば、Australia/Sydney
のタイムゾーン (ニューサウスウェールズ)はUTC+10
(EST
)、またはUTC+11
(EDT
)夏時間中。はい、それは同じ頭字語EST
です 米国が使用しているもの。タイムゾーンの頭字語はtzdataデータベースでは一意ではありません。そのため、Pgにはtimezone_abbreviations
があります。 設定。さらに悪いことに、ブリスベン(クイーンズランド州)はほぼ同じ長さであり、UTC+10 EST
にあります。 ...ただし、夏時間調整がないため、-1
になる場合があります。 NSWのDST中にニューサウスウェールズにオフセット。
(更新 :最近、オーストラリアはA
を採用しました プレフィックスなので、AEST
を使用します その東部はTZの頭字語を示していますが、EST
およびWST
引き続き一般的に使用されます。
混乱しますか?
保存する必要があるのがUTCオフセットだけの場合 次にinterval
適切です。 タイムゾーンを保存する場合 、text
として保存します 。現時点で検証してタイムゾーンオフセットに変換するのは面倒ですが、少なくともDSTに対応しています。