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

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

Patricia Arquette
發布: 2025-01-17 04:22:09
原創
294 人瀏覽過

How to Convert a UTC Datetime Column to Local Time in SQL?

在 SQL 查詢中有效地將 UTC 日期時間轉換為本地時間

許多資料庫系統以 UTC 格式儲存時間戳記以保持一致性。 本指南示範如何直接在 SQL 查詢中將這些 UTC 日期時間列轉換為本機時間,從而無需外部程式碼。

SQL Server 2008 及更高版本:

此方法利用 SWITCHOFFSET 函數進行精確轉換:

<code class="language-sql">SELECT CONVERT(datetime, 
               SWITCHOFFSET(CONVERT(datetimeoffset, 
                                    MyTable.UtcColumn), 
                            DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 
       AS ColumnInLocalTime
FROM MyTable</code>
登入後複製

替代(詳細)方法:

更直接但不太優雅的方法使用 DATEADDDATEDIFF:

<code class="language-sql">SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
       AS ColumnInLocalTime
FROM MyTable</code>
登入後複製

主要考慮因素:

  • 避免日期減法:由於潛在的競爭條件,直接日期減法 (-) 可能會產生不可預測的結果。 上述方法避免了這個問題。
  • 夏令時 (DST): 提供的解決方案不會自動處理 DST 調整。若要精確處理 DST,請參閱在 SQL Server 中解決 DST 運算的資源(例如,有關建立 DST 開始/結束函數的 Stack Overflow 討論)。

此資訊可讓您直接在 SQL 查詢中執行高效且準確的 UTC 到本機時間轉換。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板