Partager via


COMMUTER DÉCALAGE (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Base de données SQL dans Microsoft Fabric

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 toutes les fonctions et types de données de date et d’heure Transact-SQL, consultez les types et fonctions de données date et heure.

Conventions de la syntaxe Transact-SQL

Syntaxe

SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )

Arguments

datetimeoffset_expression

Expression pouvant être résolue en 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 est supposée être sensible à l’heure d’été et ajustée.

Types de retour

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

Remarques

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

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

L’utilisation SWITCHOFFSET de la fonction GETDATE() peut entraîner l’exécution lente 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 OPTION (RECOMPILE) de requête pour forcer l’optimiseur de requête à recompiler un plan de requête la prochaine fois que la même requête est exécutée. L’optimiseur a ensuite des estimations précises de cardinalité et produit un plan de requête plus efficace. Pour plus d’informations sur l’indicateur de RECOMPILE requête, consultez indicateurs de requête.

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