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.