Compartilhar via


DESLOCAMENTO DE TROCA (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Banco 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