DESLOCAMENTO DE TROCA (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBanco de dados SQL no Microsoft Fabric

Retorna um valor datetimeoffset que é alterado do deslocamento de fuso horário armazenado para um novo deslocamento de fuso horário especificado.

Para obter uma visão geral de todas as funções e tipos de dados de data e hora Transact-SQL, consulte funções e tipos de dados de data e hora.

Convenções de sintaxe de Transact-SQL

Sintaxe

SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )

Argumentos

datetimeoffset_expression

Uma expressão que pode ser resolvida para um valor datetimeoffset(n).

timezoneoffset_expression

Uma expressão no formato [+|-]TZH:TZM ou um inteiro com sinal (de minutos) que representa o deslocamento de fuso horário e é considerado consciente do horário de verão e ajustado.

Tipos de retorno

datetimeoffset com a precisão fracionária do argumento datetimeoffset_expression.

Comentários

Use SWITCHOFFSET para selecionar um valor datetimeoffset em um deslocamento de fuso horário diferente do deslocamento de fuso horário que foi originalmente armazenado. SWITCHOFFSET não atualiza o valor de time_zone armazenado.

SWITCHOFFSET pode ser usado para atualizar uma coluna datetimeoffset .

Usar SWITCHOFFSET com a função GETDATE() pode fazer com que a consulta seja executada lentamente. Isso ocorre porque o otimizador de consulta não pode obter estimativas de cardinalidade precisas para o valor de data e hora. Para resolver esse problema, use a OPTION (RECOMPILE) dica de consulta para forçar o otimizador de consulta a recompilar um plano de consulta na próxima vez que a mesma consulta for executada. Em seguida, o otimizador tem estimativas precisas de cardinalidade e produz um plano de consulta mais eficiente. Para obter mais informações sobre a RECOMPILE dica de consulta, consulte dicas de consulta.

DECLARE @dt AS DATETIMEOFFSET = switchoffset(CONVERT (DATETIMEOFFSET, GETDATE()), '-04:00');

SELECT *
FROM t
WHERE c1 > @dt
OPTION (RECOMPILE);

Exemplos

O exemplo a seguir usa SWITCHOFFSET para exibir um deslocamento de fuso horário diferente do valor armazenado no banco de dados.

CREATE TABLE dbo.test (ColDatetimeoffset DATETIMEOFFSET);
GO

INSERT INTO dbo.test VALUES ('1998-09-20 7:45:50.71345 -5:00');
GO

SELECT SWITCHOFFSET (ColDatetimeoffset, '-08:00')
FROM dbo.test;
GO
--Returns: 1998-09-20 04:45:50.7134500 -08:00

SELECT ColDatetimeoffset
FROM dbo.test;
--Returns: 1998-09-20 07:45:50.7134500 -05:00