ホームページ >データベース >mysql チュートリアル >SQL SELECT ステートメントで UTC 日時列を現地時間に変換するにはどうすればよいですか?

SQL SELECT ステートメントで UTC 日時列を現地時間に変換するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-17 04:42:09636ブラウズ

How to Convert a UTC Datetime Column to Local Time in SQL SELECT Statements?

SQL SELECT ステートメントの UTC 日付と時刻列を現地時間に変換します

SQL SELECT クエリを実行する場合、使いやすさを向上させ、データ表現の精度を向上させるために、UTC 日時列を現地時間に変換することが必要になる場合があります。これは、使用される SQL バージョンに固有の手法によって実現できます。

SQL Server 2008 以降の場合:

  • CONVERT 関数を SWITCHOFFSET および CONVERT(datetimeoffset) と組み合わせて使用​​し、システムのタイム ゾーン オフセットを考慮して UTC 列を現地時間に変換します。

SQL 構文:

<code class="language-sql">SELECT CONVERT(datetime, 
               SWITCHOFFSET(CONVERT(datetimeoffset, 
                                    MyTable.UtcColumn), 
                            DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 
       AS ColumnInLocalTime
FROM MyTable</code>
  • 代わりに、より簡潔な DATEADD 関数を変換に使用します。

SQL 構文:

<code class="language-sql">SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
       AS ColumnInLocalTime
FROM MyTable</code>

注:

変換の日付を減算するためにマイナス記号 - を使用しないでください。システムとローカルの日付時刻の間の競合状態により、予測できない結果が生じる可能性があります。

追加メモ:

提供されている方法では、夏時間 (DST) が考慮されていません。 DST の調整については、スタック オーバーフローのトピックを参照してください:

「SQL Server で夏時間の開始関数と終了関数を作成する方法」

以上がSQL SELECT ステートメントで UTC 日時列を現地時間に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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