적용 대상:Azure SQL Database
Microsoft Fabric의 SQL 데이터베이스
SET TIME ZONE Transact-SQL(T-SQL) 문은 Azure SQL Database에서 시간대 값을 설정하고 Microsoft Fabric에서 SQL 데이터베이스를 설정하는 데 사용됩니다.
메모
SET TIME ZONESQL Server 또는 Azure SQL Managed Instance에서는 지원되지 않습니다.
SET TIME ZONE 데이터베이스나 인스턴스 수준의 시간대 값을 무시합니다. 시간대 값은 sys.time_zone_info 시스템 뷰의 열과 name 동일합니다.
문법
SET TIME ZONE { 'time_zone_value' | 'LOCAL' }
[ ; ]
Arguments
{ 'time_zone_value' | '로컬'}
시간대 값을 지정합니다.
time_zone_valuenvarchar(128)이며, 기본값은 입니다.LOCAL
만약 가 지정된다면 LOCAL , 세션의 현재 기본 시간대 값은 세션의 원래 시간대 값으로 설정되며, 이는 데이터베이스 범위 옵션 또는 인스턴스 기본값일 수 있습니다.
설치된 시간대 목록이 sys.time_zone_info 시스템 뷰를 통해 노출됩니다.
비고
만약 T-SQL 모듈이나 동적 SQL 배치에서 사용된다면 SET TIME ZONE , 변경 사항은 모듈 또는 동적 SQL 배치의 실행 범위에만 적용됩니다. 모듈 또는 동적 SQL 배치 실행이 완료된 후, 세션 시간대 설정은 모듈 또는 동적 SQL 배치 실행 이전에 적용된 시간대 값으로 되돌아갑니다.
Permissions
공용 고정 데이터베이스 역할의 멤버 자격이 필요합니다.
Examples
이 글의 코드 샘플은 Azure Data SQL Samples Repository GitHub 저장소에서 다운로드할 수 있는 , , AdventureWorksDW2025또는 AdventureWorksLT2025 샘플 데이터베이스를 사용합니다AdventureWorks2025.
A. 현재 시간대 설정 보기
다음 쿼리는 서버 이름, 데이터베이스 이름, 제품 버전을 반환합니다.
SELECT @@servername AS ServerName,
DB_NAME() AS DatabaseName,
SERVERPROPERTY('ResourceVersion') AS ProductVersion;
다음 쿼리는 유효한 시간대를 UTC 오프셋 순으로 나열합니다.
SELECT *
FROM sys.time_zone_info
ORDER BY current_utc_offset;
다음 쿼리는 데이터베이스 범위 설정의 TIME_ZONE 현재 값을 확인합니다.
SELECT *
FROM sys.database_scoped_configurations
WHERE name = 'TIME_ZONE';
만약 데이터베이스 수준에서 시간대가 설정되어 있지 않으면, 기본적으로 인스턴스 시간대로 설정됩니다. 인스턴스 시간대 설정은 플랫폼에 따라 다릅니다:
| Platform | Description |
|---|---|
| Windows | 기본 OS의 시간대입니다. |
| 리눅스 | SQL Server 프로세스의 시간대를 설정할 수 있는데, 환경 변수를 TZ 사용해 설정할 수 있습니다. |
| Azure SQL 데이터베이스 | SQL 인스턴스의 시간대는 항상 UTC이며 오늘은 변경할 수 없습니다. |
| Azure SQL Managed Instance(애저 SQL 매니지드 인스턴스) | SQL 인스턴스의 시간대는 기본적으로 UTC이며, 인스턴스 생성 시점에만 수정할 수 있습니다. |
B. 데이터베이스 수준에서 시간대를 설정하세요
다음 예시는 데이터베이스 범위 시점을 뉴질랜드 표준시로 설정한 후, 해당 기능을 검토합니다.
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. 데이터베이스 범위 시간대를 기본값으로 재설정하세요
다음 예시는 데이터베이스 범위 시간대를 다시 LOCAL로 설정한 후 영향을 받은 함수들을 검토합니다.
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. 세션 수준에서 시간대를 설정하세요
다음 예시는 세션 시간대를 태평양 표준시(Pacific Standard Time)로 설정한 후 인도 표준시(India Standard Time)로 설정하며, 각 변경 후 영향을 받는 기능을 검토합니다.
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. 세션 시간대를 기본값으로 초기화하세요
다음 예시는 세션을 인스턴스나 플랫폼의 기본 시간대로 초기화합니다.
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. 시스템 뷰는 항상 인스턴스 시간대를 반환합니다
시간 값을 포함하는 시스템 뷰는 세션이나 데이터베이스 시간대와 관계없이 항상 인스턴스 시간대를 반환합니다.
SELECT *
FROM sys.dm_exec_sessions;
SELECT *
FROM sys.dm_exec_query_stats;
SELECT *
FROM sys.objects;