MySQL の夏時間による曖昧な日時の処理
夏時間 (DST) が発生すると、曖昧な時間が発生するため、それが困難になります目的の時間基準を決定します。たとえば、アメリカ/ニューヨークのタイムゾーンでは、秋の移行期間中に午前 1 時 30 分が 2 回発生する可能性があります。
問題:
MySQL の DATETIME フィールドと TIMESTAMP フィールドは一意です。この曖昧な時代に対処する上での課題。 DATETIME フィールドには、タイム ゾーンや DST 変換を考慮せずに、日付と時刻がそのまま格納されます。 TIMESTAMP フィールドは、入力タイムスタンプを UTC に変換し、その逆も同様です。
解決策:
1. DATETIME フィールドを使用する:
タイムスタンプを DATETIME フィールドに保存する前に UTC に変換します。これにより、保存する正確な UTC 時間を確実に制御できるようになります。
2.取得したデータの解釈:
DATETIME フィールドから取得したタイムスタンプを MySQL の外部の UTC タイムスタンプとして解釈します。これにより、MySQL の日付/時刻関数によって生じる曖昧さが防止されます。
3. TIMESTAMP フィールドを避ける:
DST が関係する場合、現地時間と UTC 間の変換に矛盾が生じる可能性があるため、TIMESTAMP フィールドの使用は避けてください。
実装:
取得中データ:
// Example using PHP's DateTime class $timestamp = strtotime($db_timestamp . ' UTC');
データの保存:
// Example using PHP's DateTime class $UTCDateTime = new DateTime('2009-11-01 1:30:00 EST'); $db_timestamp = $UTCDateTime->format('Y-m-d H:i:s');
考慮事項:
以上がMySQL は夏時間への移行中にあいまいな日付時刻をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。