Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :Azure SQL Database
Base de données SQL dans Microsoft Fabric
L’instruction SET TIME ZONE Transact-SQL (T-SQL) sert à définir une valeur de fuseau horaire dans Azure SQL Database et une base de données SQL dans Microsoft Fabric.
Note
SET TIME ZONEn’est pas pris en charge dans SQL Server ni Azure SQL Managed Instance.
SET TIME ZONE Supprime la valeur du fuseau horaire au niveau de la base de données ou de l’instance. La valeur du fuseau horaire est la même que celle name de la colonne dans la vue système sys.time_zone_info .
Conventions de la syntaxe Transact-SQL
Syntax
SET TIME ZONE { 'time_zone_value' | 'LOCAL' }
[ ; ]
Arguments
{ 'time_zone_value' | 'LOCAL' }
Spécifie la valeur du fuseau horaire.
time_zone_value est nvarchar(128), avec pour défaut de LOCAL.
Si LOCAL est spécifié, alors la valeur actuelle par défaut du fuseau horaire de la session est fixée à la valeur originale du fuseau horaire de la session, qui peut être soit une option par cahier de données (data scoped), soit la valeur par défaut de l’instance.
Une liste des fuseaux horaires installés est affichée via la vue système sys.time_zone_info .
Remarks
Si SET TIME ZONE est utilisé dans un module T-SQL ou un lot SQL dynamique, alors le changement ne s’applique qu’à l’étendue d’exécution du module ou du batch SQL dynamique. Après l’exécution du module ou du lot SQL dynamique terminé, le réglage du fuseau horaire de la session revient à la valeur du fuseau horaire en vigueur avant l’exécution du module ou du lot SQL dynamique.
Permissions
Nécessite l’appartenance au rôle de base de données fixe public .
Examples
Les exemples de code de cet article utilisent la AdventureWorks2025base de données , AdventureWorksDW2025, ou AdventureWorksLT2025 exemple de base de données, que vous pouvez télécharger depuis le dépôt GitHub Azure Data SQL Samples Repository.
R : Consultez les réglages actuels du fuseau horaire
La requête suivante renvoie le nom du serveur, le nom de la base de données et la version du produit.
SELECT @@servername AS ServerName,
DB_NAME() AS DatabaseName,
SERVERPROPERTY('ResourceVersion') AS ProductVersion;
La requête suivante liste les fuseaux horaires valides, ordonnés par leur décalage UTC.
SELECT *
FROM sys.time_zone_info
ORDER BY current_utc_offset;
La requête suivante vérifie la valeur actuelle de la TIME_ZONE configuration portée de la base de données.
SELECT *
FROM sys.database_scoped_configurations
WHERE name = 'TIME_ZONE';
Si le fuseau horaire n’est pas défini au niveau de la base de données, il est par défaut celui de l’instance. Le réglage du fuseau horaire de l’instance dépend de la plateforme :
| Platform | Description |
|---|---|
| Windows | Le fuseau horaire du système d’exploitation sous-jacent. |
| Linux | Le fuseau horaire du processus SQL Server, que vous pouvez définir avec la TZ variable environnement. |
| Azure SQL Database | Le fuseau horaire de l’instance SQL, qui est toujours UTC et ne peut pas être modifié aujourd’hui. |
| Azure SQL Managed Instance (Instance gérée Azure SQL) | Le fuseau horaire de l’instance SQL, qui est UTC par défaut et ne peut être modifié qu’au moment de la création de l’instance aujourd’hui. |
B. Réglez le fuseau horaire au niveau de la base de données
L’exemple suivant fixe le fuseau horaire défini par la base de données à l’heure standard de Nouvelle-Zélande, puis examine les fonctions concernées.
ALTER DATABASE SCOPED CONFIGURATION SET TIME_ZONE = 'New Zealand Standard Time';
GO
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone,
CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset,
SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime3,
CURRENT_TIMESTAMP AS CurrentLocalDateTime4;
C. Réinitialisez le fuseau horaire défini par la base de données à la valeur par défaut
L’exemple suivant remet le fuseau horaire défini par la base de données à LOCAL, puis examine les fonctions affectées.
ALTER DATABASE SCOPED CONFIGURATION SET TIME_ZONE = LOCAL;
GO
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone,
CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset,
SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime,
CURRENT_TIMESTAMP AS CurrentLocalDateTime2;
D. Réglez le fuseau horaire au niveau de la session
L’exemple suivant fixe le fuseau horaire de la session à l’heure normale du Pacifique puis à l’heure normale indienne, en examinant les fonctions affectées après chaque modification.
SET TIME ZONE 'Pacific Standard Time';
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone, CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset, SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime3, CURRENT_TIMESTAMP AS CurrentLocalDateTime4;
GO
SET TIME ZONE 'India Standard Time';
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone, CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset, SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime3, CURRENT_TIMESTAMP AS CurrentLocalDateTime4;
E. Réinitialisez le fuseau horaire de la session à celui par défaut
L’exemple suivant réinitialise la session au fuseau horaire par défaut de l’instance ou de la plateforme.
SET TIME ZONE local;
GO
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone,
CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset,
SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime3,
CURRENT_TIMESTAMP AS CurrentLocalDateTime4;
F. Les vues système retournent toujours le fuseau horaire de l’instance
Les vues système qui incluent les valeurs temporelles renvoient toujours le fuseau horaire de l’instance, quel que soit le fuseau horaire de la session ou de la base de données.
SELECT *
FROM sys.dm_exec_sessions;
SELECT *
FROM sys.dm_exec_query_stats;
SELECT *
FROM sys.objects;