データベースにタイムゾーンを保存する 質問する

データベースにタイムゾーンを保存する 質問する

MySQL と PHP を使用して、タイムゾーンを DB に保存する必要があります。少し調べてみたところ、、、、などではなく、のようなものを使用する必要があるAmerica/Los_Angelesようです。PSTPacific Standard TimePST8PDT+02.00

文字列全体を保存するのかAmerica/Los_Angeles、それとも次のような整数IDのようなものがあるのか​​?https://stackoverflow.com/a/11580459/1032531C# について説明します。who 文字列の場合、最大文字数はいくつですか?

ベストアンサー1

やのようなタイムゾーン文字列はAmerica/Halifax、いわゆるAsia/Kolkataゾーン情報データベース。これを読んでください。https://www.iana.org/time-zones現在、このドメインは Internet Assigned Numbers Authority によって管理されています。管理者が夏時間規則やその他の政治的な変更に追従しようと躍起になっているため、頻繁に変更されます。

UNIX のようなシステムでは、エントリはコード番号ではなく、ファイルシステムのディレクトリ階層に保存されます。これは私の提案の成功した実装です。どのように動作するか見てみましょう。

あなたはこう尋ねました:

America/Los_Angeles文字列全体を保存しますか

はい。

何らかの整数 ID があるのでしょうか?

いいえ、アプリケーションとデータベースを将来にわたって使い続けられるようにしたいのであれば、そうではありません。MySQL のゾーン情報データを保持する部分には time_zone_id がありますが、それらの番号を変更せずに維持するという約束は誰もしていません。

現在 (2021e、2022 年 3 月現在) のデータベースで最も長い文字列は ですposix/America/Argentina/ComodRivadavia。長さは 38 文字です。mysql.time_zone_nameテーブルにはName64 文字で定義された列があります。VARCHAR(64)この情報を格納するために を使用するのは理にかなっています。これは、名前がシステムに格納される方法と一致します。ちなみに、名前はすべて 7 ビット ASCII なので、照合を使用して、ascii_general_ci名前を格納する列を定義できます。これは、ユーザー設定のタイム ゾーン列に適した定義です。

time_zone VARCHAR(64) 
          NOT NULL 
          DEFAULT 'UTC' 
          COLLATE ascii_general_ci

WordPress は、利用可能なタイムゾーン名の選択リスト (ドロップダウン リスト) をユーザーに提供し、ユーザーの選択をテキストとして保存します。これは、模倣するのに最適な例です。

http://www.iana.org/time-zones

おすすめ記事