有没有办法获得特定时区的当前时间?
对于EX:GetDateTime(“摩洛哥标准时间”)
它应该给出当地时区的时间“摩洛哥标准时间”
先谢谢, 梅林
答案 0 :(得分:0)
我知道这个问题已经很老了,但也许这个答案对某些人有帮助。
如果您使用的是SQL Server 2016,则可以使用新功能AT TIME ZONE
。让我们一步一步得到你需要的结果。
首先,使用函数SYSDATETIMEOFFSET()
以UTC时区检索当前日期和时间。此函数的返回类型为DATETIMEOFFSET
,它不仅存储日期,还存储相关的时区信息:
SELECT SYSDATETIMEOFFSET()
-- Result is 2016-08-20 13:15:25.3760873 +03:00
然后使用AT 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