ホームページ  >  記事  >  バックエンド開発  >  夏時間への移行中に MySQL にデータを正確に保存および取得するにはどうすればよいでしょうか?

夏時間への移行中に MySQL にデータを正確に保存および取得するにはどうすればよいでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-19 01:59:02800ブラウズ

How Can You Accurately Store and Retrieve Data in MySQL During Daylight Saving Time Transitions?

MySQL 日時フィールドと夏時間: 「追加」時間の取得

夏時間 (DST) を採用している地域では、 MySQL などのデータベースで日付と時刻を処理する場合、複雑な課題が発生します。具体的には、標準時から DST への移行中に発生する「余分な」時間に関連するデータを正確に保存および取得するにはどうすればよいですか?

問題: 時間参照の曖昧さ

アメリカ/ニューヨークのタイムゾーンで、秋に時計が 1 時間戻り、1 時間が「失われる」状況を考えてみましょう。この移行中、「午前 1 時 30 分」のような時刻は曖昧になり、標準時間の午前 1 時 30 分 (-04:00) または夏時間の午前 1 時 30 分 (-05:00) を指す可能性があります。

MySQL の日時フィールドの処理

MySQL は、DATETIME と TIMESTAMP という 2 つの異なるタイプの日時フィールドを提供します。 TimeSTAMP フィールドは入力された日時を UTC に自動的に変換しますが、DATETIME フィールドはそれらを直接保存します。ただし、どちらのフィールド タイプも、DST を正確に処理するという課題に直面しています。

解決策: DATETIME フィールドの使用と UTC への変換

これらの制限を克服するには、次のアプローチが推奨されます。 DATETIME フィールドを使用し、データベースに保存する前に日時を UTC に変換します。データを DST 以外のタイムゾーンで保存すると、今後の変換と計算を曖昧さなく実行できます。

データベース ストレージ用に UTC に変換する手順

  1. データの抽出: PHP の strtotime() や DateTime クラスなどの関数を使用して、データベースからデータを UTC として取得します。
  2. UTC に変換: 日付時刻をPHP の DateTime クラスまたは同等の機能を使用して、希望の UTC 時間を設定します。
  3. データベースに保存: 変換された UTC 日時を DATETIME フィールドに保存します。

結論

DST 移行を注意深く管理し、日時を MySQL に保存する前に UTC に変換することで、開発者は正確で一貫した処理を保証できます。このアプローチにより曖昧さが排除され、MySQL データベース内で信頼性の高い日付と時刻に関連した操作が可能になります。

以上が夏時間への移行中に MySQL にデータを正確に保存および取得するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。