有没有办法获取特定给定时区的当前时间?
对于 EX:GetDateTime("摩洛哥标准时间")
它应该给出时区的当地时间“摩洛哥标准时间”
提前致谢,梅林
我知道这个问题已经很老了,但也许答案会对某人有所帮助。
如果您使用的是 SQL Server 2016,则可以使用新功能AT TIME ZONE
。让我们一步一步得到你需要的结果。
首先,使用函数SYSDATETIMEOFFSET()
在 UTC 时区检索当前日期和时间。这个函数的返回类型是DATETIMEOFFSET
,里面不仅存储了日期,还存储了相关的时区信息:
SELECT SYSDATETIMEOFFSET()
-- Result is 2016-08-20 13:15:25.3760873 +03:00
然后这个 withAT TIME ZONE
声明。这将返回DATETIMEOFFSET
您需要的时区:
SELECT SYSDATETIMEOFFSET() AT TIME ZONE 'Morocco Standard Time'
-- Result is 2016-08-20 11:15:25.3760873 +01:00
此外,如果您想丢失时区信息并使用DATETIME
,您可以将上述结果转换为DATETIME
:
SELECT CAST( SYSDATETIMEOFFSET() AT TIME ZONE 'Morocco Standard Time' AS DATETIME)
-- Result is 2016-08-20 11:15:25.376