2012-07-24 22 views
3

我需要跟蹤用戶的時區,以便在他們指定的特定時間(在他們自己的時區內)處理他們的信息(或不處理)。存儲用戶時區的最佳實踐 - TSQL/.Net

顯而易見的答案是將時區存儲在用戶數據庫及其個人資料信息中。有點棘手的事情是夏令時。請注意,從下面的圖片可以看出,大部分北部和南部地區都使用日光時間偏移。因此,存儲時區偏移並不覺得它會起作用,因爲該偏移可能會在一年中發生變化。相反,我想存儲時區代碼(類似於PST),並讓標準時間庫查找偏移量。

所以,有兩件事情我想的都是:

1)是否有TSQL該庫從一個時區代碼(PST)轉換爲當前UTC偏移? 2)我知道.net can do this,但我寧願在數據庫中這樣做,因爲這是我的查詢運行的地方。

enter image description here

+0

我注意到TSQL有一個'SWITCHOFFSET'功能,可以將給定的偏移量(比如-00:00)轉換爲其他時區偏移量(比如說-08:00)。然而,該函數假定偏移量「是夏令時的感知和調整」,所以這並不能真正幫助動態地找到DTS調整的偏移值。 [1] http://msdn.microsoft.com/en-us/library/bb677244.aspx – 2012-07-24 15:45:01

+1

我的經驗是,TSQL不會針對時區進行調整。在使用CLR和SQL獲得正確的時間方面有很好的文章。 – Paparazzi 2012-07-24 15:48:39

+0

http://stackoverflow.com/questions/3404646/how-to-calculate-the-local-datetime-from-a-utc-datetime-in-tsql-sql-2005 – Paparazzi 2012-07-24 15:49:55

回答

0

找到什麼樣子了promising .Net library。這個與.NET中內置的優點相比,你可以通過在磁盤上刪除一個新副本來更新時區數據庫。使用.Net,你必須等待新的編譯版本。 (不過時區變化可能很少見)