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

Exemplos de TODATETIMEOFFSET() no SQL Server


No SQL Server, você pode usar o TODATETIMEOFFSET() função para retornar um deslocamento de data e hora valor que é traduzido de um datetime2 expressão. Ele aceita dois argumentos; a data e o deslocamento que você deseja aplicar a essa data.

Abaixo estão exemplos de uso.


Sintaxe


A sintaxe de TODATETIMEOFFSET() fica assim:
TODATETIMEOFFSET ( expression , time_zone )

Onde expression é uma expressão que resolve para um datetime2 value e time_zone é o fuso horário que você deseja aplicar a essa expressão (data).

Você pode fornecer o fuso horário em minutos ou horas. Se você fornecer em minutos, use um número inteiro (por exemplo, -120 ), caso contrário, para fornecê-lo em horas, use uma string (por exemplo, '+04.00' ). O intervalo para o fuso horário é de +14 a -14 (horas).

Além disso, a data fornecida é interpretada na hora local para o fuso horário especificado.

Exemplo 1


Aqui está um exemplo básico de uso:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;

Resultado:
Result
----------------------------------
2112-01-01 00:00:00.0000000 +08:00

Exemplo 2 - Valor Negativo


Este é o mesmo que o exemplo anterior, exceto que eu uso um valor negativo:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;

Resultado:
Result
----------------------------------
2112-01-01 00:00:00.0000000 -08:00

Exemplo 3 – Usando uma variável datetime2


Neste exemplo, defini explicitamente uma variável com um datetime2 valor e, em seguida, aplique TODATETIMEOFFSET() para esse valor e compare os valores:
DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Resultado:
Original Date               +08:00
--------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00

Como podemos ver neste exemplo (e nos anteriores), o valor de data original não possui nenhum datetime informações de deslocamento (porque é um datetime2 value), mas depois de executá-lo através do TODATETIMEOFFSET() função, acabamos com um datetimeoffset tipo de dados.

Exemplo 4 – Usando uma variável datetimeoffset


Isso é semelhante ao exemplo anterior, exceto que a data original é definida como um deslocamento de data e hora valor:
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Resultado:
Original Date                      +08:00
---------------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00

Exemplo 5 – Usando a data/hora atual


Neste exemplo, passo o SYSDATETIMEOFFSET() função como a expressão de data. Esta função gera a data/hora atual do computador que está executando a instância do SQL Server:
SELECT 
    SYSDATETIMEOFFSET() AS 'Current Date',
    TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';

Resultado:
Current Date                       +08:00
---------------------------------- ----------------------------------
2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00

Exemplo 6 - Fornecendo o deslocamento de fuso horário como um inteiro


Conforme mencionado, você também pode fornecer o deslocamento de fuso horário como um número inteiro em vez de uma string:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;

Resultado:
Result
----------------------------------
2112-01-01 00:00:00.0000000 -03:00