SET TIJDZONE (Transact-SQL)

Van toepassing op:Azure SQL DatabaseSQL-database in Microsoft Fabric

De SET TIME ZONE Transact-SQL (T-SQL)-instructie wordt gebruikt om een tijdzonewaarde in Azure SQL Database in te stellen en een SQL-database in Microsoft Fabric.

Note

SET TIME ZONEwordt niet ondersteund in SQL Server of Azure SQL Managed Instance.

SET TIME ZONE overschrijft de waarde van de database of de tijdzone op instantieniveau. De tijdzonewaarde is hetzelfde als de name kolom in het sys.time_zone_info systeemweergave.

Transact-SQL syntaxis-conventies

Syntax

SET TIME ZONE { 'time_zone_value' | 'LOCAL' }
[ ; ]

Argumenten

{ 'time_zone_value' | 'LOKAAL' }

Specificeert de waarde van de tijdzone. time_zone_value is nvarchar(128), met een standaard van LOCAL.

Als LOCAL is gespecificeerd, dan wordt de huidige standaard tijdzonewaarde van de sessie ingesteld op de oorspronkelijke tijdzonewaarde van de sessie, wat zowel databasescoped optie als de standaard instantie kan zijn.

Een lijst van geïnstalleerde tijdzones wordt getoond via de sys.time_zone_info systeemweergave.

Remarks

Als SET TIME ZONE wordt gebruikt in een T-SQL-module of dynamische SQL-batch, geldt de wijziging alleen voor de scope van uitvoering van de module of dynamische SQL-batch. Nadat de uitvoering van de module of dynamische SQL-batch is voltooid, keert de sessietijdzone-instelling terug naar de tijdzonewaarde die van vóór de uitvoering van de module of dynamische SQL-batch gold.

Permissions

Vereist lidmaatschap van de rol openbare vaste database.

Examples

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2025, AdventureWorksDW2025, of AdventureWorksLT2025 voorbeelddatabase, die je kunt downloaden van de Azure Data SQL Samples Repository GitHub-repository.

Eén. Bekijk de huidige tijdzone-instellingen

De volgende query geeft de servernaam, databasenaam en productversie terug.

SELECT @@servername AS ServerName,
       DB_NAME() AS DatabaseName,
       SERVERPROPERTY('ResourceVersion') AS ProductVersion;

De volgende query vermeldt de geldige tijdzones, geordend op hun UTC-offset.

SELECT *
FROM sys.time_zone_info
ORDER BY current_utc_offset;

De volgende query controleert de huidige waarde van de TIME_ZONE databasescoped configuratie.

SELECT *
FROM sys.database_scoped_configurations
WHERE name = 'TIME_ZONE';

Als de tijdzone niet op databaseniveau is ingesteld, wordt standaard de instantie-tijdzone gebruikt. De instelling van de instance-tijdzone hangt af van het platform:

Platform Beschrijving
Windows De tijdzone van het onderliggende besturingssysteem.
Linux De tijdzone van het SQL Server-proces, die je kunt instellen met de TZ omgevingsvariabele.
Azure SQL Database De tijdzone van de SQL-instantie, die altijd UTC is en vandaag niet veranderd kan worden.
Azure SQL Managed Instance (een beheerde database-instantie van Azure) De tijdzone van de SQL-instantie, die standaard UTC is en pas vandaag bij het maken van de instantie kan worden aangepast.

B. Stel de tijdzone in op databaseniveau

Het volgende voorbeeld stelt de tijdzone met scope in de database in op Nieuw-Zeelandse standaardtijd en bekijkt vervolgens de getroffen functies.

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. Reset de database-scope tijdzone naar de standaard

Het volgende voorbeeld zet de databasescoped tijdzone terug naar LOCAL, en bekijkt vervolgens de getroffen functies.

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. Stel de tijdzone in op sessieniveau

Het volgende voorbeeld stelt de sessietijdzone in op Pacific Standard Time en vervolgens op India Standard Time, waarbij de getroffen functies na elke wijziging worden beoordeeld.

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. Reset de sessietijdzone naar de standaard

Het volgende voorbeeld reset de sessie naar de instantie- of platformtijdzone.

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. Systeemweergaven geven altijd de tijdzone van de instantie terug

Systeemweergaven die tijdwaarden bevatten, geven altijd de tijdzone van de instantie terug, ongeacht de sessie- of databasetijdzone.

SELECT *
FROM sys.dm_exec_sessions;

SELECT *
FROM sys.dm_exec_query_stats;

SELECT *
FROM sys.objects;