SQL Server中如何查询获取当前服务器Windows格式时区名称
SQL Server 获取当前服务器Windows格式时区名称的方法
根据SQL Server版本不同,可选择对应查询方式,直接返回India Standard Time、US Eastern Standard Time这类标准Windows时区名称:
SQL Server 2022及以上版本、Azure SQL系列服务(最简便方案)
直接调用内置的CURRENT_TIMEZONE()函数即可,该函数原生返回实例所在宿主环境配置的Windows时区标识符,无权限问题、结果准确。
执行语句:SELECT CURRENT_TIMEZONE() AS ServerWindowsTimeZoneName;SQL Server 2019及更早的本地部署版本
低版本无对应内置函数,可通过SQL Server自带的实例级注册表读取存储过程获取系统时区配置——默认配置下SQL Server服务账号拥有对应注册表项的读取权限,无需额外授权。
执行语句:DECLARE @TZName NVARCHAR(255); EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SYSTEM\CurrentControlSet\Control\TimeZoneInformation', N'TimeZoneKeyName', @TZName OUTPUT; SELECT @TZName AS ServerWindowsTimeZoneName;
注意:不要尝试通过
SYSDATETIMEOFFSET()返回的UTC偏移值反推时区名称。全球存在多个时区在非夏令时/夏令时时段共用同一个UTC偏移值,偏移值会随夏令时规则动态变化,反推结果存在极高的错配概率,无法满足业务准确性要求。
内容的提问来源于stack exchange,提问作者lazyboy
相关产品推荐
相关产品推荐

