SQL Server クエリ内で UTC 日時列を現地時間に効率的に変換することは、正確なデータの表示と分析にとって重要です。 潜在的な落とし穴を回避する効果的な方法を次に示します:
SQL Server 2008 以降:
SWITCHOFFSET()
および CONVERT()
: この堅牢なメソッドはタイムゾーン オフセットを処理します:<code class="language-sql">SELECT CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, MyTable.UtcColumn), DATENAME(TzOffset, SYSDATETIMEOFFSET()))) AS ColumnInLocalTime FROM MyTable</code>
DATEADD()
、 DATEDIFF()
、および GETDATE()
: より簡潔な代替案:<code class="language-sql">SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) AS ColumnInLocalTime FROM MyTable</code>
重要な注意事項: -
演算子を使用した直接の日付の減算は、強く推奨されません。 これにより、潜在的な競合状態により予測できない結果が生じる可能性があります。
夏時間 (DST) に関する考慮事項:
上記のメソッドは本質的に DST 移行を処理しません。正確な DST 調整については、次の Stack Overflow リソースを参照してください。
以上がSQL Server で UTC 日時列を現地時間に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。