Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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