Partager via


SWITCHOFFSET (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Retourne une valeur datetimeoffset du décalage de fuseau horaire stocké qui est remplacée par un nouveau décalage de fuseau horaire spécifié.

Pour obtenir une vue d’ensemble de tous les types de données et fonctions de date et d’heure Transact-SQL, consultez Types de données et fonctions de date et d’heure (Transact-SQL).

Conventions de la syntaxe Transact-SQL

Syntaxe

SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   

Arguments

datetimeoffset_expression
Expression qui peut être résolue en une valeur datetimeoffset(n).

timezoneoffset_expression
Expression au format [+|-]TZH:TZM ou entier signé (de minutes) qui représente le décalage de fuseau horaire et qui est supposée être réglée et prendre en charge l’heure d’été.

Type de retour

datetimeoffset avec la précision fractionnelle de l’argument datetimeoffset_expression.

Remarques

Utilisez SWITCHOFFSET pour sélectionner une valeur datetimeoffset dans un décalage de fuseau horaire qui est différent du décalage de fuseau horaire stocké à l’origine. SWITCHOFFSET ne met pas à jour la valeur time_zone stockée.

La fonction SWITCHOFFSET peut être utilisée pour mettre à jour une colonne datetimeoffset.

L'utilisation de SWITCHOFFSET avec la fonction GETDATE() peut entraîner un ralentissement de l'exécution de la requête. Cela est dû au fait que l'optimiseur de requête n'est pas en mesure d'obtenir les estimations de cardinalité exactes pour la valeur datetime. Pour résoudre ce problème, utilisez l'indicateur de requête OPTION (RECOMPILE) pour forcer l'optimiseur de requête à recompiler un plan de requête lors de la prochaine exécution de cette même requête. L'optimiseur dispose alors d'estimations de cardinalité précises et produit un plan de requête plus efficace. Pour plus d’informations sur l’indicateur de requête RECOMPILE, consultez Indicateurs de requête (Transact-SQL).

DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');   
SELECT * FROM t    
WHERE c1 > @dt OPTION (RECOMPILE);  

Exemples

L'exemple suivant utilise SWITCHOFFSET pour afficher un décalage de fuseau horaire différent de la valeur stockée dans la base de données.

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  

Voir aussi

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