请看下面的代码:
DECLARE @UKDateTime as DateTime
SELECT @UKDateTime = GETDATE() AT TIME ZONE 'GMT Standard Time'
print @UKDateTime
PRINT GETDATE()
这将返回:
Oct 4 2021 4:03PM
Oct 4 2021 4:03PM
目前英国的时间是:下午 5:03(由我的电脑时钟确认)。它似乎正在返回 UTC 日期。问题是什么?
我将 SQL Server 设置为 Docker 容器。它是 SQL Server v18.4。
AT TIME ZONE的文档说:
您正在使用 GETDATE,它返回没有任何偏移信息的日期时间,因此该函数假定它已经是目标时区中的时间。
如果要将本地服务器日期和时间转换为 GMT,可以使用:
或者,例如,如果您的本地服务器时区是“东部标准时间”: