2013-01-21 72 views
0

是否可以在SQL Server 2008 R2上的SQL代码中获取当前时区的名称,例如"Eastern Standard Time""EST"?我知道我可以通过计算getdate()getutcdate()之间的差异来确定数字本地时间偏移量,但这不是我所需要的。我只需要底层操作系统的TZ名称。SQL Server 2008中的时区名称

+0

可以使用SQL CLR做到这一点,但为什么你需要它的SQL?在应用程序代码中执行它会容易得多。 –

+0

@MattJohnson当然,有很多方法可以用其他语言获取时区,但是由于我的应用程序的具体情况,我特别需要在存储过程的SQL代码中使用 – Cozzamara

+0

然后将列表放在表中。 –

回答

3

没有任何定义的表,如果你只是想从系统信息中读取时区信息,那么它可以从系统注册表中读取。

declare @TZName varchar(50) 

exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', 
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation', 
'TimeZoneKeyName',@TZName OUT 

select @TZName 

拉吉

+0

我看过那篇文章 - 它没有回答我的问题,也没有以任何方式提供帮助。我不需要时区列表,我不关心区域偏移值。单偏移值(与UTC相关)对应于多个不同时区,在一年中的不同时间有所不同,因此使用TZ列表不会有所帮助。 – Cozzamara

+0

请参阅编辑我的回答 – Raj

+0

注册表方法的工作原理,谢谢 - 这就是我真正需要的。请从您的答案中删除提及MSDN博客和tz列表,以免混淆未来的读者。 – Cozzamara