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

Exemplos de SWITCHOFFSET() no SQL Server


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