私はMySQLとPHPを使用し、タイムゾーンをDBに保存する必要があります。少し読んで、America/Los_Angeles
のようなものを使用する必要があるようです。 PST
、Pacific Standard Time
、PST8PDT
、+02.00
などではありません。
America/Los_Angeles
文字列全体を保存しますか、それとも https://stackoverflow.com/a/11580459/1032531 などの整数IDのような種類のc#について説明しますか? who文字列の場合、最大文字数はいくつですか?
_America/Halifax
_や_Asia/Kolkata
_などのタイムゾーン文字列は、いわゆるzoneinfoデータベースのエントリを参照します。これを読む。 https://www.iana.org/time-zones 現在、Internet Assigned Numbers Authorityによって管理されています。メンテナが夏時間規則やその他の一時的な政治的なものへの変更に遅れずについていくため、状況は大きく変化します。
UNIXライクなシステムでは、エントリはファイルシステムのディレクトリ階層に保存され、コード番号ではありません。それは私の提案の成功した実装です。あなたはそれがどのように機能するかを見ることができます。
あなたは尋ねました:
_
America/Los_Angeles
_文字列全体を保存しますか
はい。
それには何らかの整数IDがありますか?
いいえ、アプリケーションとデータベースに将来性を持たせたい場合はそうではありません。 MySQLの一部にzoneinfoデータを保持するtime_zone_idがありますが、これらの番号を変更しないことを約束した人は誰もいません。
現在の(2019b)データベースで最も長い文字列は_America/Argentina/ComodRivadavia
_です。長さは32文字です。 _mysql.time_zone_name
_テーブルには、64文字で定義されたName
列があります。この情報を格納するためにVARCHAR(64)
を使用することには意味があります。これは、名前がシステムに保存される方法と一致します。
ちなみに、WordPressは、利用可能なタイムゾーン名の選択リスト(ドロップダウンリスト)をユーザーに提供し、ユーザーの選択をテキストとして保存します。これは模倣するのに適した例です。
ここをチェックしてください MySql DateTime
MySQLは、TIMESTAMP値を現在のタイムゾーンからUTCに変換して格納し、取得のためにUTCから現在のタイムゾーンに戻します。 (これは、DATETIMEなどの他のタイプでは発生しません。)デフォルトでは、各接続の現在のタイムゾーンはサーバーの時間です。時間帯は接続ごとに設定できます。タイムゾーンの設定が一定である限り、保存した値と同じ値が返されます。
タイムゾーンを維持するため、および抽出情報がタイムゾーンを変換するときに、テーブルに新しい列を追加する必要があります。