2013-02-24 25 views
17

在SQL Server中,我需要找到給定的datetimeoffset(7)的偏移量。在SQL Server中獲取datetimeoffset的偏移量

我研究了文檔,並且有所有方法來改變偏移量,但沒有辦法知道特定值的偏移量(抱歉,如果我錯過了它)。

那麼我想出了下面這段代碼,我覺得雖然看起來太複雜了。

DECLARE @datetimeOffset datetimeoffset(7) 

SET @datetimeOffset = CAST('2007-05-08 22:35:29.1234567-05:00' AS datetimeoffset(7)) 

DECLARE @result datetimeoffset(7) 
DECLARE @offsetMin int 

SET @offsetMin = DATEDIFF(mi, cast(SWITCHOFFSET(@datetimeOffset, '+00:00') as datetime), cast(@datetimeOffset as datetime)) 

SELECT @offsetMin 

我仍然必須做轉換爲+00:00格式,但想檢查是否有更好的方法來做到這一點。

謝謝!

回答

30

datepart函數有一個tz選項,它是以分鐘爲單位的時區偏移量。

datepart(tz,@datetimeoffset) 
+6

您還可以獲取DATENAME(tz,@datetimeoffset)以獲取作爲varchar的偏移量。 – 2013-09-10 19:46:19

+4

'TZOFFSET'可以代替'tz',而且值得一提的是SSMS語法高亮顯示。 – 2014-06-06 16:01:33

+0

這隻適用於SSMS 2012+ – codeMonkey 2017-02-17 20:45:57