Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:Azure SQL Database
SQL-databas i Microsoft Fabric
Satsen SET TIME ZONE Transact-SQL (T-SQL) används för att sätta ett tidszonsvärde i Azure SQL Database och SQL-databas i Microsoft Fabric.
Note
SET TIME ZONEstöds inte i SQL Server eller Azure SQL Managed Instance.
SET TIME ZONE Åsidosätter databas- eller instansnivåns tidszonsvärde. Tidszonsvärdet är detsamma som kolumnen name i sys.time_zone_info systemvy.
Transact-SQL syntaxkonventioner
Syntax
SET TIME ZONE { 'time_zone_value' | 'LOCAL' }
[ ; ]
Arguments
{ 'time_zone_value' | 'LOKAL' }
Specificerar tidszonsvärdet.
time_zone_value är nvarchar(128), med standardvärdet .LOCAL
Om LOCAL anges anges det aktuella standardvärdet i tidszonen för sessionen till sessionens ursprungliga tidszonsvärde, vilket kan vara antingen databasbegränsat alternativ eller instansstandard.
En lista över installerade tidszoner visas via sys.time_zone_info systemvy.
Remarks
Om SET TIME ZONE den används i en T-SQL-modul eller en dynamisk SQL-batch, gäller ändringen endast för omfattningen av exekveringen av modulen eller den dynamiska SQL-batchen. Efter att modulen eller den dynamiska SQL-batchen har slutförts, återgår sessionens tidszonsinställning till tidszonsvärdet som gällde före exekveringen av modulen eller den dynamiska SQL-batchen.
Permissions
Kräver medlemskap i den offentliga fasta databasrollen.
Examples
Kodexemplen i denna artikel använder AdventureWorks2025, AdventureWorksDW2025, eller AdventureWorksLT2025 exempeldatabasen, som du kan ladda ner från Azure Data SQL Samples Repository GitHub-arkivet.
A. Visa de aktuella tidszonsinställningarna
Följande fråga returnerar servernamn, databasnamn och produktversion.
SELECT @@servername AS ServerName,
DB_NAME() AS DatabaseName,
SERVERPROPERTY('ResourceVersion') AS ProductVersion;
Följande fråga listar de giltiga tidszonerna, ordnade efter deras UTC-förskjutning.
SELECT *
FROM sys.time_zone_info
ORDER BY current_utc_offset;
Följande fråga kontrollerar det aktuella värdet i databasens TIME_ZONE scoped-konfiguration.
SELECT *
FROM sys.database_scoped_configurations
WHERE name = 'TIME_ZONE';
Om tidszonen inte är inställd på databasnivå, går den automatiskt över till instansens tidszon. Instansens tidszoninställning beror på plattformen:
| Platform | Description |
|---|---|
| Windows | Tidszonen för det underliggande operativsystemet. |
| Linux | Tidszonen för SQL Server-processen, som du kan ställa in med miljövariabelnTZ. |
| Azure SQL Database | Tidszonen för SQL-instansen, som alltid är UTC och inte kan ändras idag. |
| Hanterad instans i Azure SQL | Tidszonen för SQL-instansen, som är UTC som standard och kan ändras vid instansskapandet först idag. |
B. Ställ in tidszonen på databasnivå
Följande exempel sätter databasens tidszon med scoped till Nya Zeelands standardtid och granskar sedan de berörda funktionerna.
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. Återställ den databasbegränsade tidszonen till standardinställningen
Följande exempel återställer databasens tidszon till LOCAL, och granskar sedan de berörda funktionerna.
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. Ställ in tidszonen på sessionsnivå
Följande exempel sätter sessionstidszonen till Pacific Standard Time och sedan till India Standard Time, och granskar de berörda funktionerna efter varje ändring.
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. Återställ sessionstidszonen till standardinställningen
Följande exempel återställer sessionen till instansens eller plattformens standardtidszon.
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. Systemvyer returnerar alltid instansens tidszon
Systemvyer som inkluderar tidsvärden returnerar alltid instansens tidszon, oavsett sessions- eller databastidszon.
SELECT *
FROM sys.dm_exec_sessions;
SELECT *
FROM sys.dm_exec_query_stats;
SELECT *
FROM sys.objects;