gpt4 book ai didi

sql - 在 select 语句中将日期时间列从 UTC 转换为本地时间

转载 作者:行者123 更新时间:2023-12-01 16:28:57 25 4
gpt4 key购买 nike

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

最佳答案

您可以在 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

无论你做什么,不要使用-来减去日期,因为该操作不是原子的,并且由于日期之间的竞争条件,你有时会得到不确定的结果。系统日期时间和本地日期时间在不同时间检查(即非原子地)。

请注意,此答案未考虑夏令时。如果您想包括 DST 调整,另请参阅以下问题:

How to create Daylight Savings time Start and End function in SQL Server

关于sql - 在 select 语句中将日期时间列从 UTC 转换为本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8038744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com