世界のさまざまな地域のサマータイム (夏時間) 切り替えルールをデータベースに保存する必要があります。私はすでにリージョンとサブリージョンを格納する方法を持っています (したがって、「オーストラリアの半分」/アリゾナ/ナバホの問題全体が処理されます) が、これを達成するための最も効率的なスキーマは何であるか疑問に思っています。私が見た2つのオプション:
- 夏時間の開始時間と終了時間、および特定のオフセットを示す、年と地域ごとに一意の 1 行を含むテーブルを用意します。
- 各地域の数式と有効な日付範囲を格納するテーブルを用意します (イスラエルのような地域には有効な範囲が必要です)。
最初の利点は、文字通り何でも可能であるため、柔軟性です。残念ながら、(a) より多くのスペースが必要になり、それに応じて (b) データ入力を取得するために多くの作業が必要になります。2 つ目は、1 つの行が 1 つの地域に何十年も対応できるため、優れていますが、アプリケーション層で何らかの言語パーサーとインタープリターも必要になります。このデータベースは、強力なテキスト処理機能を持たない言語で書かれたいくつかの異なるアプリケーションで使用されるため、その方法は避けたいと思います。
zoneinfo などを使用したいのですが、残念ながらこの場合はオプションではありません。同様に、日付を正規化することはできません。タイムゾーンとサマータイムの情報は、特定のユースケースを満たすためにデータベースに存在する必要があります。
誰かが似たようなことをした経験がありますか? 同様に、私が見逃した可能性のある優れたオプションを誰かが持っていますか?