ホームページ > データベース > mysql チュートリアル > MySQL の DATETIME フィールドは夏時間の曖昧さをどのように正確に処理できるのでしょうか?

MySQL の DATETIME フィールドは夏時間の曖昧さをどのように正確に処理できるのでしょうか?

Patricia Arquette
リリース: 2024-12-16 05:19:10
オリジナル
295 人が閲覧しました

How Can MySQL DATETIME Fields Accurately Handle Daylight Savings Time Ambiguity?

MySQL 日時フィールドと夏時間: あいまいな時間の処理

MySQL 日時フィールドは、夏時間への移行を扱う際に特有の課題を提示します。タイムシフトにより、1 時間が 1 日に 2 回表示されます。このあいまいさは、日時フィールドがタイム ゾーン オフセットを明示的に指定せずにタイムスタンプを格納するために発生します。

問題:

アメリカ/ニューヨークのタイムゾーンで次のシナリオを考えてみましょう。

  • 01:59:00 -04:00
  • 01:00:00 -05:00 (タイムシフト後)

「1:30am」を MySQL データベースに保存せずにオフセットを指定すると、曖昧さ:

  • "2009-11-01 00:30:00" は 2009-11-01 00:30:00 -04:00
  • "2009-11 として保存されます-01 01:30:00" として保存されます。 2009-11-01 01:30:00 -05:00

これにより、どの午前 1 時 30 分が参照されているかを判断することが困難になります。

解決策: DATETIME とTIMESTAMP

一般的な考えに反して、MySQL では DATETIME フィールドと TIMESTAMP フィールドの動作が異なります。

  • TIMESTAMP: 挿入時に UTC 時間に変換され、UTC 時間に戻されます。現地時間retrieval.
  • DATETIME: タイムゾーン変換なしで直接保存されます。

ベスト プラクティス: UTC で DATETIME フィールドを使用する

夏時間への移行中にタイムスタンプを正確に保存するには、次の使用をお勧めします。 DATETIME フィールドを使用し、UTC タイムゾーンを明示的に指定します。これにより、保存する前にタイムスタンプを UTC に変換でき、取得時にタイムスタンプが正しく解釈されるようになります。

実装手順:

  1. 取得時データ:

    • PHP の strtotime() または DateTime クラスを使用してデータを UTC として解釈し、正確な Unix タイムスタンプを取得します。
  2. 保管時データ:

    • タイムスタンプを UTC に変換し (PHP の DateTime クラスを使用するなど)、DATETIME フィールドに保存します。

これらの手順に従うことで、夏時間への移行中にあいまいなタイムスタンプを正確に処理し、タイムスタンプの整合性を確保できます。あなたのデータ。

以上がMySQL の DATETIME フィールドは夏時間の曖昧さをどのように正確に処理できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート