在SQL Server中,我想創建一個表來節省事件的時間,並且希望將其轉換爲用戶選擇的時區以用於顯示目的。讓我們說,如果在格林尼治標準時間下午1點發生在倫敦的事件,那將是美國東部時間上午8點。SQL Server如何在不同時區保留和使用時間
鑑於這個例子,我想創建一個工作框架,
,其中用戶將不得不保存事件和時間(給予事件的時區)
的能力閱讀這些事件,在他喜歡的時區顯示時間(美國東部標準時間)
如何在SQL Server中完成此操作。
在SQL Server中,我想創建一個表來節省事件的時間,並且希望將其轉換爲用戶選擇的時區以用於顯示目的。讓我們說,如果在格林尼治標準時間下午1點發生在倫敦的事件,那將是美國東部時間上午8點。SQL Server如何在不同時區保留和使用時間
鑑於這個例子,我想創建一個工作框架,
,其中用戶將不得不保存事件和時間(給予事件的時區)
的能力閱讀這些事件,在他喜歡的時區顯示時間(美國東部標準時間)
如何在SQL Server中完成此操作。
在SQL Server 2008中,使用DATETIMEOFFSET數據類型,該數據類型是DATETIME加上包含的時區偏移量。
SELECT CAST('2010-11-23 16:35:29+09:00' AS datetimeoffset)
將於2010年11月23日下午4:35 +9小時(GMT)時區。
SQL Server 2008還包含功能和SQL命令來DATETIMEOFFSET
值轉換,從一個時區到另一個:
SELECT
SWITCHOFFSET(CAST('2010-11-23 16:35:29+09:00' AS datetimeoffset), '+01:00')
會導致:
2010-11-23 08:35:29.0000000 +01:00
同一時間,不同的時區(1小時from GMT)
+1,希望我能給更多。 – Brad 2010-11-23 16:05:39
DateTime.UtcNow
)`GMT!= UTC`:參見@ chezy的帖子評論 – Brad 2010-11-23 16:09:48
我已經解決了類似的問題的方法是做到以下幾點:
FYI:`GMT`是程序員-speak,已棄用。它基於**太陽日均值**。 UTC是基於原子鐘並代替`GMT`。爲了這裏所述的目的,它們是等價的,但是`GMT`已經不再使用了。 http://geography.about.com/od/timeandtimezones/a/gmtutc.htm – Brad 2010-11-23 16:09:09
哪個**版本的SQL Server? SQL Server 2008有一個新的數據類型`DATETIMEOFFSET`,它是一個DATETIME,包括一個時區偏移量 - 對你的情況來說是完美的 – 2010-11-23 15:19:00