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調整,請參考Stack Overflow主題:
「如何在SQL Server中建立夏令時開始與結束函數」
以上是如何在 SQL SELECT 語句中將 UTC 日期時間列轉換為本機時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!