SQL Server查询时区

时间:2014-06-04 09:37:08

标签: isqlquery

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

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

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

先谢谢, 梅林

1 个答案:

答案 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