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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-17 04:42:09630瀏覽

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函數結合SWITCHOFFSETCONVERT(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調整,請參考Stack Overflow主題:

「如何在SQL Server中建立夏令時開始與結束函數」

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

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