ホームページ > データベース > mysql チュートリアル > 正確なタイムゾーン変換のために MySQL の CONVERT_TZ() 関数をトラブルシューティングするにはどうすればよいですか?

正確なタイムゾーン変換のために MySQL の CONVERT_TZ() 関数をトラブルシューティングするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-29 17:44:11
オリジナル
449 人が閲覧しました

How Can I Troubleshoot MySQL's CONVERT_TZ() Function for Accurate Time Zone Conversions?

MySQL CONVERT_TZ() の問題

データベース内でタイム ゾーンを使用する場合、特に夏時間 (DST) を使用する場合、次のことが重要です。正確な変換を保証します。ここでは、MySQL CONVERT_TZ() 関数に関するいくつかの問題とその解決策を示します:

Q1。タイムゾーン名の正確さ

はい、その通りです。 「US/Eastern」のようなタイムゾーン名を指定すると、自動的に夏時間が考慮されます。 CONVERT_TZ('00:00:00', 'UTC', 'US/EASTERN') は、DST のため、1 月 1 日と 7 月 1 日では実際に異なる結果を生成するはずです。

Q2。タイム ゾーン テーブルの更新

MySQL は、一連のタイム ゾーン テーブルを使用して、さまざまなタイム ゾーンの現在のオフセットを決定します。これらのテーブルの最新バージョンを使用していない場合、CONVERT_TZ() 関数が正しく機能しない可能性があります。次のクエリを実行すると、タイム ゾーン テーブルが最新かどうかを確認できます。

SELECT VERSION() FROM mysql.time_zone_name;
ログイン後にコピー

出力に '2018h' より低いバージョン番号が表示される場合は、次のクエリを実行してテーブルを更新する必要があります。次のコマンド:

mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root -p mysql
ログイン後にコピー

Q3. CONVERT_TZ()

からの "NULL" 結果 発生した "NULL" 結果は、タイム ゾーン テーブルが適切にインストールまたは初期化されていないことを示している可能性があります。これを確認するには、次のクエリを実行します。

SELECT COUNT(*) FROM mysql.time_zone;
ログイン後にコピー

結果が 0 の場合は、タイム ゾーン テーブルが空であることを意味します。この場合、上記のコマンドを使用してインストールできます。

代替ソリューション

タイムゾーン変換には通常、CONVERT_TZ() が信頼できるソリューションですが、次の方法もあります。タイムゾーンテーブルの必要性を排除する代替アプローチ。ユーザーの UTC からのタイム ゾーン オフセットを時間単位で保存し、次のクエリを使用して UTC 時間をユーザーの現地時間に変換できます:

SELECT UTC_TIMESTAMP() + INTERVAL user_timezone_offset_in_hours HOUR;
ログイン後にコピー

この方法はタイム ゾーン テーブルを必要とせず、比較的簡単に実装できます。 .

以上が正確なタイムゾーン変換のために MySQL の CONVERT_TZ() 関数をトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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