No SQL Server, o
SWITCHOFFSET()
pode ser usada para retornar um deslocamento de data e hora valor que é alterado do deslocamento de fuso horário armazenado para um novo deslocamento de fuso horário especificado. Abaixo estão exemplos de como esta função funciona.
Sintaxe
Primeiro, veja como a sintaxe funciona:
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Onde
DATETIMEOFFSET
é uma expressão que pode ser resolvida para um datetimeoffset(n) value e time_zone
é uma cadeia de caracteres no formato [+|-]TZH:TZM ou um número inteiro com sinal (de minutos) que representa o deslocamento do fuso horário e é considerado compatível com o horário de verão e ajustado. O resultado é retornado como um deslocamento de data e hora com a precisão fracionária do
DATETIMEOFFSET
argumento. Exemplo 1
Aqui está um exemplo básico de uso:
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
Resultado:
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
Exemplo 2
Este exemplo usa um valor negativo:
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
Resultado:
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
Exemplo 4
Neste exemplo, declaramos uma variável e atribuímos uma data a ela usando o datetimeoffset tipo de dados. Em seguida, aplicamos
SWITCHOFFSET()
a essa data e compará-la com a data original. DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';
Resultado:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00
Exemplo 5
Aqui fazemos a mesma coisa que no exemplo anterior, mas usamos o
SYSDATETIMEOFFSET()
função para gerar a data/hora atual e deslocamento. SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Resultado:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
Exemplo 6
Este exemplo é igual ao anterior, exceto que adicionamos um valor negativo.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
Resultado:
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
Exemplo 7
Você também pode fornecer o deslocamento de fuso horário como um número inteiro em vez de uma string:
SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
Resultado:
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00