夏時間の MySQL CONVERT_TZ()
ユーザー定義のローカル タイム ゾーンで指定された毎日のアラートをデータベースに保存する場合、夏時間 (DST) を考慮することが重要です。この記事では、DST に対応するための CONVERT_TZ() 関数の使用法を検討し、その実装に関連する一般的な質問に答えます。
質問 1: DST によるタイム ゾーンの変換
CONVERT_TZ() 関数は、タイムゾーン名を指定するときに DST を考慮します。たとえば、UTC 時間を米国/東部時間に変換すると、DST が有効かどうかに応じて異なる結果が得られます。これは、CONVERT_TZ('00:00:00', 'UTC', 'US/EASTERN') は 1 月 1 日には '19:00:00'、7 月 1 日には '20:00:00' を返す必要があるという理解と一致します。
質問 2: MySQL タイムゾーン テーブル更新
CONVERT_TZ() 関数が正しく動作している場合、通常、MySQL のタイム ゾーン テーブルを手動で更新する必要はありません。 MySQL は、タイム ゾーン情報を保存する内部データベースを維持し、タイム ゾーン規制の変更に基づいて必要に応じて更新します。ただし、タイム ゾーン設定をカスタマイズした場合は、正確性を確保するためにテーブルを定期的に確認することをお勧めします。
質問 3: CONVERT_TZ() からの Null 値
CONVERT_TZ() が NULL を返す場合、これは MySQL タイムゾーン テーブルが正しく設定されていないことを示します。これを確認するには、次のクエリを実行します。
SELECT CONVERT_TZ(now(), 'US/Eastern', 'US/Central');
このクエリが NULL を返した場合、テーブルが構成されていないことを示します。この問題を解決するには、MySQL ドキュメントでタイム ゾーン テーブルの設定手順を参照してください。
代替アプローチ
MySQL タイム ゾーン テーブルでは、次のアプローチを使用できます。
の場合例:
SELECT utc_timezone() - interval user_timezone_offset_in_hours hour FROM userinfo a WHERE user_id = 999;
以上がMySQL の CONVERT_TZ() 関数は夏時間をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。