SET ZEITZONE (Transact-SQL)

Gilt für:Azure SQL-DatenbankSQL-Datenbank in Microsoft Fabric

Die SET TIME ZONE Transact-SQL (T-SQL)-Anweisung wird verwendet, um einen Zeitzonenwert in Azure SQL-Datenbank und eine SQL-Datenbank in Microsoft Fabric festzulegen.

Note

SET TIME ZONEwird weder in SQL Server noch in Azure SQL Managed Instance unterstützt.

SET TIME ZONE überschreibt den Zeitzonenwert auf Datenbank- oder Instanzebene. Der Zeitzonenwert ist derselbe wie die Spalte name in der sys.time_zone_info Systemansicht.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

{ 'time_zone_value' | 'LOKAL' }

Spezifiziert den Zeitzonenwert. time_zone_value ist nvarchar(128), mit einem Standard von LOCAL.

Wenn LOCAL angegeben ist, wird der aktuelle Standardzeitzonenwert der Sitzung auf den ursprünglichen Zeitzonenwert der Sitzung gesetzt, der entweder die Datenbank-Scoped-Option oder die Instanz-Standardoption sein kann.

Eine Liste installierter Zeitzonen wird über die sys.time_zone_info Systemansicht angezeigt.

Hinweise

Wenn SET TIME ZONE in einem T-SQL-Modul oder einem dynamischen SQL-Batch verwendet wird, gilt die Änderung nur für den Ausführungsbereich des Moduls oder des dynamischen SQL-Batches. Nachdem die Ausführung des Moduls oder des dynamischen SQL-Batches abgeschlossen ist, kehrt die Einstellung der Sitzungszeitzone auf den Zeitzonenwert zurück, der vor der Ausführung des Moduls oder des dynamischen SQL-Batches gilt.

Erlaubnisse

Erfordert die Mitgliedschaft in der rolle der öffentlichen festen Datenbank.

Examples

Die Codebeispiele in diesem Artikel verwenden die AdventureWorksDW2025- oder AdventureWorks2025-Beispieldatenbank, die Sie aus dem Azure Data SQL Samples Repository-GitHub-Repository herunterladen können.

A. Sehen Sie sich die aktuellen Zeitzoneneinstellungen an

Die folgende Abfrage liefert den Servernamen, den Datenbanknamen und die Produktversion.

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

Die folgende Abfrage listet die gültigen Zeitzonen auf, geordnet nach ihrem UTC-Offset.

SELECT *
FROM sys.time_zone_info
ORDER BY current_utc_offset;

Die folgende Abfrage prüft den aktuellen Wert der datenbankbezogenen TIME_ZONE Konfiguration.

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

Wenn die Zeitzone nicht auf Datenbankebene festgelegt ist, wird standardmäßig die Instanzzeitzone verwendet. Die Einstellung der Instanz-Zeitzone hängt von der Plattform ab:

Platform Description
Windows Die Zeitzone des zugrundeliegenden Betriebssystems.
Linux Die Zeitzone des SQL Server-Prozesses, die du mit der TZ Umgebungsvariable einstellen kannst.
Azure SQL-Datenbank Die Zeitzone der SQL-Instanz, die immer UTC ist und heute nicht mehr geändert werden kann.
Verwaltete Azure SQL-Instanz Die Zeitzone der SQL-Instanz, die standardmäßig UTC ist und erst heute bei der Instanzerstellung geändert werden kann.

B. Stellen Sie die Zeitzone auf Datenbankebene ein

Das folgende Beispiel setzt die in der Datenbank erfasste Zeitzone auf die neuseeländische Standardzeit und überprüft dann die betroffenen Funktionen.

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. Setzen Sie die datenbankbegrenzte Zeitzone auf die Standardeinstellung zurück

Das folgende Beispiel setzt die in der Datenbank erfasste Zeitzone zurück auf LOCAL, und überprüft dann die betroffenen Funktionen.

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. Stellen Sie die Zeitzone auf Sitzungsebene ein

Das folgende Beispiel setzt die Sitzungszeitzone auf Pacific Standard Time und dann auf India Standard Time, wobei die betroffenen Funktionen nach jeder Änderung überprüft werden.

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. Setzen Sie die Sitzungszeitzone auf die Standardeinstellung zurück

Das folgende Beispiel setzt die Sitzung auf die Standard-Zeitzone der Instanz oder Plattform zurück.

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. Systemansichten geben immer die Instanzzeitzone zurück

Systemansichten, die Zeitwerte enthalten, geben immer die Instanzzeitzone zurück, unabhängig von der Sitzung oder der Datenbankzeitzone.

SELECT *
FROM sys.dm_exec_sessions;

SELECT *
FROM sys.dm_exec_query_stats;

SELECT *
FROM sys.objects;