最初に、これについて以前に詳細に書いたので、私の回答を読んでくださいここ
および
特にMySQLに関しては、通常、TIMESTAMP
は使用しません。 書き込み時にセッションのタイムゾーンからUTCに変換され、読み取り時にUTCからセッションのタイムゾーンに変換されるため、将来のイベントの現地時間のフィールド。これらが同じタイムゾーンIDである場合でも(必ずしもそうである必要はありません)、データを書き込んでからイベントが発生するまでの間に、一方または両方のタイムゾーンでタイムゾーンデータが変更されないという保証はありません。発生します。
代わりに、DATETIME
を使用してください フィールド。暗黙的なタイムゾーン変換は行いません。あなたが書いた正確な値を取得します。イベントの現地時間を保存し、VARCHAR
を保存します イベントのタイムゾーン識別子を含むフィールド。これは、ユーザーの本来の意図を保持する唯一の方法です。
理論的根拠とエッジケースはすべて、私が以前に与えた回答に記載されています。