sql >> Base de Datos >  >> RDS >> Sqlserver

SYSDATETIMEOFFSET() Ejemplos en SQL Server (T-SQL)

En SQL Server, el transact-sql SYSDATETIMEOFFSET() la función devuelve un datetimeoffset(7) valor que contiene la fecha y la hora del equipo en el que se ejecuta la instancia de SQL Server. Este valor incluye el desplazamiento de la zona horaria.

Ejemplos de uso a continuación.

Sintaxis

La sintaxis es así:

SYSDATETIMEOFFSET ( )

Así que simplemente llamas a la función sin ningún argumento.

Ejemplo

He aquí un ejemplo básico:

SELECT SYSDATETIMEOFFSET() AS Result;

Resultado:

Result
----------------------------------
2018-06-17 09:55:27.3221853 +10:00

Extracción de la compensación de zona horaria

Puede usar el DATEPART() función para devolver el desplazamiento de la zona horaria. Esta función devuelve un número entero que representa el desplazamiento de la zona horaria en minutos.

Ejemplo:

SELECT 
    SYSDATETIMEOFFSET() AS 'Date/time',
    DATEPART(TZoffset, SYSDATETIMEOFFSET()) AS 'TZ Offset';

Resultado:

Date/time                             TZ Offset
----------------------------------    -----------
2018-06-17 10:04:23.2316409 +10:00    600

También puede usar la función FORMAT() para devolver el desplazamiento de la zona horaria como una cadena. Específicamente, puede usar el z , zz y/o zzz argumentos para devolverlo en el formato requerido.

Ejemplo:

SELECT 
    SYSDATETIMEOFFSET() AS 'Date/time',
    FORMAT(SYSDATETIMEOFFSET(), 'zz') AS 'zz',
    FORMAT(SYSDATETIMEOFFSET(), 'zzz') AS 'zzz';

Resultado:

Date/time                             zz                zzz
----------------------------------    --------------    --------------
2018-06-17 10:27:33.7314840 +10:00    +10               +10:00

Conversión del valor de retorno

También puede usar funciones como CONVERT() para convertir el valor devuelto en otro tipo de datos. Aquí hay un ejemplo donde lo convierto en una fecha valor y un tiempo valor:

SELECT 
    CONVERT (date, SYSDATETIMEOFFSET()) AS 'Date',
    CONVERT (time, SYSDATETIMEOFFSET()) AS 'Time';

Resultado:

Date          Time
----------    ----------------
2018-06-17    10:08:29.6377947

Por supuesto, una vez que hacemos eso, perdemos la compensación de la zona horaria.

Ver también TODATETIMEOFFSET() que le permite obtener un datetimeoffset valor de un datetime2 expresión y SWITCHOFFSET() que le permite cambiar una compensación de zona horaria.