在 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中文網其他相關文章!