2013-01-21 70 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