Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do:Azure SQL Database
Baza danych SQL w Microsoft Fabric
Instrukcja SET TIME ZONE Transact-SQL (T-SQL) służy do ustawienia wartości strefy czasowej w Azure SQL Database oraz bazy SQL w Microsoft Fabric.
Note
SET TIME ZONEnie jest obsługiwany w SQL Server ani Azure SQL Managed Instance.
SET TIME ZONE nadpisuje wartość strefy czasowej na poziomie bazy danych lub instancji. Wartość strefy czasowej jest taka sama jak kolumna name w widoku systemu sys.time_zone_info .
Transact-SQL konwencje składni
Syntax
SET TIME ZONE { 'time_zone_value' | 'LOCAL' }
[ ; ]
Arguments
{ 'time_zone_value' | 'LOKALNY' }
Określa wartość strefy czasowej.
time_zone_value to nvarchar(128), z domyślnym .LOCAL
Jeśli LOCAL jest określona, to aktualna domyślna wartość strefy czasowej sesji jest ustalana na oryginalną wartość strefy czasowej sesji, która może być opcją skalą bazy danych lub domyślną instancją.
Lista zainstalowanych stref czasowych jest dostępna w widoku sys.time_zone_info systemowym.
Remarks
Jeśli SET TIME ZONE jest używany w module T-SQL lub dynamicznym SQL, zmiana dotyczy tylko zakresu wykonania modułu lub dynamicznej partii SQL. Po zakończeniu uruchomienia pakietu modułu lub dynamicznego SQL, ustawienie strefy czasowej sesji wraca do wartości strefy czasowej obowiązującej przed wykonaniem modułu lub dynamicznej partii SQL.
Permissions
Wymaga członkostwa w publicznej stałej roli bazy danych.
Examples
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać z repozytorium GitHub Azure Data SQL Samples Repository.
Odp. Zobacz aktualne ustawienia stref czasowych
Następujące zapytanie zwraca nazwę serwera, nazwę bazy danych oraz wersję produktu.
SELECT @@servername AS ServerName,
DB_NAME() AS DatabaseName,
SERVERPROPERTY('ResourceVersion') AS ProductVersion;
Poniższe zapytanie wymienia ważne strefy czasowe, uporządkowane według ich przesunięcia UTC.
SELECT *
FROM sys.time_zone_info
ORDER BY current_utc_offset;
Następujące zapytanie sprawdza aktualną wartość TIME_ZONE konfiguracji skalowanej bazy danych.
SELECT *
FROM sys.database_scoped_configurations
WHERE name = 'TIME_ZONE';
Jeśli strefa czasowa nie jest ustawiona na poziomie bazy danych, domyślnie przyjmuje się strefę czasową instancji. Ustawienie strefy czasowej instancji zależy od platformy:
| Platforma | Description |
|---|---|
| Windows | Strefa czasowa bazowego systemu operacyjnego. |
| Linux | Strefa czasowa procesu SQL Server, którą możesz ustawić za pomocą TZ zmiennej środowiskowej. |
| Azure SQL Database | Strefa czasowa instancji SQL, która zawsze jest UTC i dziś nie może być zmieniona. |
| Azure SQL Managed Instance | Strefa czasowa instancji SQL, która domyślnie jest UTC i może być modyfikowana dopiero w momencie tworzenia instancji. |
B. Ustaw strefę czasową na poziomie bazy danych
Poniższy przykład ustawia strefę czasową w skali bazy danych na nowozelandzki czas standardowy, a następnie przegląda dotknięte funkcje.
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. Zresetuj strefę czasową z zakresem bazy danych do domyślnej wartości
Poniższy przykład cofa strefę czasową w skali bazy danych na , LOCALa następnie przegląda dotknięte funkcje.
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. Ustaw strefę czasową na poziomie sesji
Poniższy przykład ustawia strefę czasową sesji na czas standardowy Pacyfiku, a następnie na czas standardowy Indii, przeglądając dotknięte funkcje po każdej zmianie.
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. Zresetuj strefę czasową sesji do domyślnej wartości
Poniższy przykład resetuje sesję do domyślnej strefy czasowej instancji lub platformy.
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. Widoki systemowe zawsze zwracają strefę czasową instancji
Widoki systemowe zawierające wartości czasowe zawsze zwracają strefę czasową instancji, niezależnie od sesji lub strefy czasowej bazy danych.
SELECT *
FROM sys.dm_exec_sessions;
SELECT *
FROM sys.dm_exec_query_stats;
SELECT *
FROM sys.objects;