1

有没有办法获取特定给定时区的当前时间?

对于 EX:GetDateTime("摩洛哥标准时间")

它应该给出时区的当地时间“摩洛哥标准时间”

提前致谢,梅林

4

1 回答 1

1

我知道这个问题已经很老了,但也许答案会对某人有所帮助。

如果您使用的是 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
于 2016-08-20T10:10:48.393 回答