La funzione SWITCHOFFSET regola un valore DateTimeOffset ingresso a un fuso orario specificato , preservando la Valore UTC. La sintassi è SWITCHOFFSET (datetimeoffset_value, time_zone). Ad esempio, il codice seguente regola il valore datetimeoffset sistema attuale fuso orario GMT +05: 00:
SELEZIONA SWITCHOFFSET (SYSDATETIMEOFFSET(), '-05: 00');
Quindi, se l'attuale sistema valore datetimeoffset è 12 febbraio 2009 10: 00: 00.0000000 -08: 00, questo codice restituisce il valore 12 febbraio 2009 13: 00: 00.0000000 -05: 00.
La funzione TODATETIMEOFFSET imposta lo scostamento del fuso orario di una data di immissione e il valore temporale . La sua sintassi è TODATETIMEOFFSET (date_and_time_value, time_zone).
Questa funzione è diversa da SWITCHOFFSET in diversi modi. Innanzitutto, non è limitato a un valore datetimeoffset come input; piuttosto accetta qualsiasi data e ora di dati tipo.In secondo luogo, esso non tenta di regolare l'ora in base al fuso orario differenza tra il valore di origine e il fuso orario specificato ma invece restituisce semplicemente la data di input e valore di tempo con il fuso orario specificato come valore datetimeoffset .
Lo scopo principale della funzione TODATETIMEOFFSET vale a convertire formati non fuso orario consapevoli di datetimeoffset dal tempo determinato differenza di fuso. Se la data e l'ora data valore è un datetimeoffset, la funzione TODATETIMEOFFSET cambia valore datetimeoffset base alla stessa data locale originale e il valore temporale e la nuova proposta fuso offset.
Ad esempio, l'attuale sistema di valore datetimeoffset è il 12 febbraio 2009 10: 00: 00.0000000 -08: 00, e si eseguire il seguente codice:
SELEZIONA TODATETIMEOFFSET (SYSDATETIMEOFFSET(), '-05: 00');
Il valore 12 febbraio 2009 10: 00: 00.0000000 -05: 00 viene restituito. Ricordate che la funzione SWITCHOFFSET restituito 12 febbraio 2009 13: 00: 00.0000000 -05: 00 perché modificare il tempo in base alle differenze di fuso orario tra l'ingresso (-08: 00) e il fuso orario specificato (-05: 00).
Come accennato in precedenza, è possibile utilizzare la funzione TODATETIMEOFFSET con qualsiasi tipo di dati di data e ora come input. Ad esempio, il seguente codice ha la data corrente sistema e valore temporale e restituisce come valore datetimeoffset con un fuso -00: 05:
SELEZIONA TODATETIMEOFFSET (SYSDATETIME(), '-05: 00');
--- Grazie ragazzi, avrei dovuto essere chiaro che ho semplicemente voluto aggiungere l'offset senza modificare il tempo stesso. Ma voi ragazzi mi avete portato lì! ;) – hdz