在Oracle中执行以下SQL:
SELECT TZ_OFFSET('Europe/Brussels') from dual;
返回值+02:00
请注意,此功能可用于Olsson表示法中的任何时区。这与数据库服务器无关。
我想知道在MS Sql Server中是否存在类似的功能,你可以询问给定时区的偏移量(以微软时区表示法)。
答案 0 :(得分:1)
从SQL 2016开始,在Azure SQL数据库中,您可以通过以下方式实现此目的:
SELECT DATENAME(tz, SYSDATETIMEOFFSET() AT TIME ZONE 'Romance Standard Time')
-- Output: '+02:00'
请注意,时区名称是 Windows 时区标识符,而不是IANA TZ(aka Olson)标识符。有关差异的更多信息,请参阅the timezone tag wiki。
如果您要使用IANA TZ标识符,或者您使用的是不具有AT TIME ZONE
功能的旧版SQL Server,则可以使用我的SQL Server Time Zone Support project,以下内容:
SELECT DATENAME(tz, Tzdb.SwitchZone(SYSDATETIMEOFFSET(), 'Europe/Brussels'))
-- Output: '+02:00'
另请注意,只能为特定参考点的时区计算偏移量。在我的示例中,您可以看到我已使用SYSDATETIMEOFFSET()
选择了当前系统时间。 (当前时间隐式与Oracle的TZ_OFFSET
函数。)