小编典典

将select语句中的Datetime列从UTC转换为本地时间

sql

我正在执行一些SQL选择查询,并希望将UTC日期时间列转换为本地时间,以在查询结果中显示为本地时间。注意,我不是在通过代码执行此转换,而是在对数据库执行手动和随机SQL查询时。


阅读 167

收藏
2021-05-05

共1个答案

小编典典

您可以在SQL Server 2008或更高版本上执行以下操作:

SELECT CONVERT(datetime, 
               SWITCHOFFSET(CONVERT(datetimeoffset, 
                                    MyTable.UtcColumn), 
                            DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 
       AS ColumnInLocalTime
FROM MyTable

您还可以执行以下操作:

SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
       AS ColumnInLocalTime
FROM MyTable

无论您做什么, 都不要
使用-减法日期,因为该操作不是原子操作,并且由于系统日期时间与本地日期时间在不同时间(即非原子方式)之间的竞争状况,有时您会获得不确定的结果。

2021-05-05