首頁 >資料庫 >mysql教程 >如何在 SQL Server 中將 UTC 日期時間列轉換為本機時間?

如何在 SQL Server 中將 UTC 日期時間列轉換為本機時間?

Barbara Streisand
Barbara Streisand原創
2025-01-17 04:36:09129瀏覽

How to Convert UTC Datetime Columns to Local Time in SQL Server?

在 SQL Server 查詢中將 UTC 轉換為本機時間

在 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 中建立夏令時開始與結束函數

以上是如何在 SQL Server 中將 UTC 日期時間列轉換為本機時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn