Compartilhar via


SWITCHOFFSET (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

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

Para ter uma visão geral de todas as funções e tipos de dados de data e hora do Transact-SQL, confira Funções e tipos de dados de data e hora (Transact-SQL).

Convenções de sintaxe de Transact-SQL

Sintaxe

SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   

Argumentos

datetimeoffset_expression
É uma expressão que pode ser resolvida em 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 ajustado e com reconhecimento de horário de verão.

Tipo 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 originalmente armazenado. SWITCHOFFSET não atualiza o valor 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 lenta. 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 dica de consulta OPTION (RECOMPILE) para forçar o otimizador de consulta a recompilar um plano de consulta na próxima vez que a mesma consulta for executada. O otimizador terá estimativas de cardinalidade exatas e gerará um plano de consulta mais eficiente. Para obter mais informações sobre a dica de consulta da RECOMPILE, confira Dicas de consulta (Transact-SQL).

DECLARE @dt 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  

Consulte Também

CAST e CONVERT (Transact-SQL)
AT TIME ZONE (Transact-SQL)