Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exemplos de SYSDATETIMEOFFSET() no SQL Server (T-SQL)


No SQL Server, o transact-sql SYSDATETIMEOFFSET() a função retorna um datetimeoffset(7) valor que contém a data e hora do computador no qual a instância do SQL Server está sendo executada. Esse valor inclui o deslocamento de fuso horário.

Exemplos de uso abaixo.


Sintaxe


A sintaxe fica assim:
SYSDATETIMEOFFSET ( )

Então você simplesmente chama a função sem nenhum argumento.

Exemplo


Segue um exemplo básico:
SELECT SYSDATETIMEOFFSET() AS Result;

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

Extrair o deslocamento de fuso horário


Você pode usar o DATEPART() função para retornar o deslocamento de fuso horário. Esta função retorna um inteiro que representa o deslocamento do fuso horário em minutos.

Exemplo:
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

Você também pode usar a função FORMAT() para retornar o deslocamento de fuso horário como uma string. Especificamente, você pode usar o z , zz , e/ou zzz argumentos para devolvê-lo no formato necessário.

Exemplo:
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

Conversão do valor de retorno


Você também pode usar funções como CONVERT() para converter o valor de retorno em outro tipo de dados. Aqui está um exemplo em que eu converto em uma data valor e um tempo valor:
SELECT 
    CONVERT (date, SYSDATETIMEOFFSET()) AS 'Date',
    CONVERT (time, SYSDATETIMEOFFSET()) AS 'Time';

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

Claro, uma vez que fazemos isso, perdemos o deslocamento de fuso horário.

Veja também TODATETIMEOFFSET() que permite obter um deslocamento de data e hora valor de um datetime2 expressão e SWITCHOFFSET() que permite alterar um deslocamento de fuso horário.