2013-02-24 17 views
17

In SQL Server è necessario trovare l'offset di un dato datetimeoffset(7).Ottenere offset di datetimeoffset in SQL Server

Ho cercato la documentazione e ci sono tutti i modi per cambiare l'offset ma non un modo per conoscere l'offset di un valore particolare (scusate se l'ho perso).

Bene, mi è venuto in mente il seguente pezzo di codice che trovo troppo complicato anche se sembra funzionare.

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 

devo ancora fare la conversione al +00: formato di 00, ma ha voluto verificare se c'è un modo migliore di fare questo.

Grazie!

risposta

30

La funzione datepart ha un'opzione tz che corrisponde al fuso orario in minuti.

datepart(tz,@datetimeoffset) 
+6

È anche possibile ottenere DATENAME (tz, @datetimeoffset) per ottenere l'offset come varchar. –

+4

'TZOFFSET' funziona al posto di' tz' e, per quello che vale, è riconosciuto dall'evidenziatore di sintassi SSMS. –

+0

Funziona solo in SSMS 2012+ – codeMonkey

Problemi correlati