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

Adicionar um deslocamento de fuso horário a um valor datetime2 no SQL Server (T-SQL)


No SQL Server, o TODATETIMEOFFSET() função foi projetada especificamente para retornar um datetimeoffset valor de um datetime2 valor.

Dado que o datetime2 o tipo de dados não oferece suporte a deslocamentos de fuso horário e datetimeoffset deve conter o deslocamento, o TODATETIMEOFFSET() A função permite que você especifique um deslocamento de fuso horário a ser usado.

Este artigo fornece alguns exemplos para demonstrar.

Uso Básico


Aqui está um exemplo de uso típico do TODATETIMEOFFSET() função.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
  @dt AS [datetime2],
  TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset];

Resultado (usando saída vertical):
datetime2      | 2020-12-20 17:33:59.8900000
datetimeoffset | 2020-12-20 17:33:59.8900000 +07:00

Neste caso, devolvo o original datetime2 value e o datetimeoffset resultante valor.

O resultado é que a data/hora original é a mesma, exceto que o deslocamento de fuso horário especificado foi anexado.

O intervalo é de +14 a -14 (em horas). A expressão é interpretada na hora local para o fuso horário especificado.

Especifique o deslocamento de fuso horário em minutos


Você também pode especificar o deslocamento do fuso horário em minutos. Aqui está um exemplo.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
  @dt AS [datetime2],
  TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset];

Resultado (usando saída vertical):
datetime2      | 2020-12-20 17:33:59.8900000
datetimeoffset | 2020-12-20 17:33:59.8900000 +02:00

Nesse caso, especifiquei +120 minutos, o que equivale a duas horas. Portanto, o resultado foi um deslocamento de fuso horário de +02:00 (ou seja, mais duas horas).

Observe também que, ao fornecer o deslocamento de fuso horário em minutos, você o fornece como um valor inteiro. Por outro lado, quando você o fornece em horas, precisa especificá-lo como uma string.

Consulte Converter uma data em outro fuso horário para obter exemplos de como fazer isso.