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 サイトの他の関連記事を参照してください。