w00*_*977 7 sql-server timezone datetime
请看下面的代码:
DECLARE @UKDateTime as DateTime
SELECT @UKDateTime = GETDATE() AT TIME ZONE 'GMT Standard Time'
print @UKDateTime
PRINT GETDATE()
Run Code Online (Sandbox Code Playgroud)
这将返回:
Oct 4 2021 4:03PM
Oct 4 2021 4:03PM
Run Code Online (Sandbox Code Playgroud)
目前英国时间为:下午 5:03(由我的电脑时钟确认)。它似乎正在返回 UTC 日期。问题是什么?
我将 SQL Server 设置为 Docker 容器。它是 SQL Server v18.4。
Pau*_*ite 12
AT TIME ZONE的文档说:
\n\n\n将输入日期转换为目标时区中相应的 datetimeoffset 值。当提供的 inputdate 没有偏移量信息时,该函数将应用时区的偏移量,假设 inputdate 位于目标时区。如果 inputdate 作为 datetimeoffset 值提供,则 AT TIME ZONE 子句会使用时区转换规则将其转换为目标时区。
\n
您正在使用GETDATE
,它返回一个没有任何偏移信息的日期时间,因此该函数假设它已经是目标时区的时间。
如果您想将本地服务器日期和时间转换为 GMT,您可以使用:
\nSELECT SYSDATETIMEOFFSET() \n AT TIME ZONE \'GMT Standard Time\';\n
Run Code Online (Sandbox Code Playgroud)\n或者例如,如果您的本地服务器时区是“东部标准时间”:
\nSELECT GETDATE() -- datetime without context\n AT TIME ZONE \'Eastern Standard Time\' -- where you are\n AT TIME ZONE \'GMT Standard Time\'; -- target time zone\n
Run Code Online (Sandbox Code Playgroud)\n有关 的详细信息AT TIME ZONE
,请参阅Rob Farley 撰写的SQL Server 2016 中最喜欢的新功能 AT TIME ZONE \xe2\x80\x93。
归档时间: |
|
查看次数: |
8343 次 |
最近记录: |