La función SWITCHOFFSET ajusta un valor DateTimeOffset de entrada a una zona horaria especificada , preservando al mismo tiempo la Valor UTC. La sintaxis es SWITCHOFFSET (datetimeoffset_value, time_zone). Por ejemplo, el siguiente código ajusta el valor actual del sistema datetimeoffset a la zona horaria GMT 05: 00:
SELECT SWITCHOFFSET (SYSDATETIMEOFFSET(), '-05: 00');
lo tanto, si el valor actual del sistema datetimeoffset es el 12 de febrero de 2009 10: 00: 00,0000000 -08: 00, este código devuelve el valor 12 de febrero de 2009 13: 00: 00,0000000 -05: 00.
La función TODATETIMEOFFSET establece offset de zona horaria de una fecha de entrada y valor de tiempo. Su sintaxis es TODATETIMEOFFSET (date_and_time_value, time_zone).
Esta función es diferente de SWITCHOFFSET de varias maneras. En primer lugar, no está restringido a un valor datetimeoffset como entrada; más bien acepta cualquier dato de fecha y hora tipo .En segundo lugar, no trata de ajustar el tiempo en función de la diferencia de huso horario entre el valor de la fuente y la zona horaria especificada pero su lugar simplemente devuelve la fecha de entrada como el valor temporal con la zona horaria especificado como un valor datetimeoffset .
El propósito principal de la función TODATETIMEOFFSET es convertir los tipos que no son conscientes de zona horaria a DateTimeOffset por la zona momento dado offset. Si la fecha y la hora valor dado es un DateTimeOffset, la función TODATETIMEOFFSET cambia el valor DateTimeOffset basado en la misma fecha local original y valor de tiempo además de la nueva zona horaria determinada offset.
Por ejemplo, el valor actual del sistema datetimeoffset es 12 de febrero de 2009 10: 00: 00,0000000 -08: 00, y que ejecute el siguiente código:
SELECT TODATETIMEOFFSET (SYSDATETIMEOFFSET(), '-05: 00');
Se devuelve el valor 12 de febrero de 2009 10: 00: 00.0000000 -05: 00. Recuerde que la función SWITCHOFFSET obtenido 12 de febrero de, 2009 13: 00: 00,0000000 -05: 00 porque ajustar el tiempo en función de las diferencias de zona horaria entre la entrada (-08: 00) y la zona de tiempo especificado (-05: 00).
Como se mencionó anteriormente, puede utilizar la función TODATETIMEOFFSET con cualquier tipo de datos de fecha y hora como entrada. Para ejemplo, el siguiente código toma la fecha actual sistema y el valor de tiempo y lo devuelve como un valor datetimeoffset con una zona de tiempo -00: 05:
SELECT TODATETIMEOFFSET (SYSDATETIME(), '-05: 00 ');
--- Gracias chicos, que debería haber sido claro en que yo simplemente quería añadir el desplazamiento sin cambiar el tiempo mismo. ¡Pero ustedes me consiguieron allí! ;) – hdz