SWITCHOFFSET(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

저장된 표준 시간대 오프셋에서 지정된 새 표준 시간대 오프셋으로 변경된 datetimeoffset 값을 반환합니다.

모든 Transact-SQL 날짜/시간 데이터 형식 및 함수에 대한 개요는 날짜/시간 데이터 형식 및 함수(Transact-SQL)를 참조하세요.

Transact-SQL 구문 표기 규칙

Syntax

SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

datetimeoffset_expression
datetimeoffset(n) 값으로 확인할 수 있는 식입니다.

timezoneoffset_expression
[+|-]TZH:TZM 또는 부호 있는 정수(분) 형식의 식으로, 표준 시간대 오프셋을 나타내며 일광 절약 시간제를 인식하고 이에 따라 조정되는 것으로 간주됩니다.

반환 형식

datetimeoffsetdatetimeoffset_expression 인수의 소수 전체 자릿수로 표시합니다.

설명

처음 저장된 표준 시간대 오프셋과 다른 표준 시간대 오프셋으로 datetimeoffset 값을 선택하려면 SWITCHOFFSET을 사용합니다. SWITCHOFFSET은 저장된 time_zone 값을 업데이트하지 않습니다.

SWITCHOFFSET을 사용하여 datetimeoffset 열을 업데이트 할 수 있습니다.

GETDATE() 함수에 SWITCHOFFSET을 사용하면 쿼리 실행이 느려질 수 있습니다. 이는 쿼리 최적화 프로그램에서 datetime 값에 대한 정확한 카디널리티 예측을 구할 수 없기 때문입니다. 이 문제를 해결하려면 OPTION (RECOMPILE) 쿼리 힌트를 사용하여 다음에 동일한 쿼리를 실행할 때 쿼리 최적화 프로그램에서 쿼리 계획을 다시 컴파일하도록 하세요. 그러면 최적화 프로그램에서 정확한 카디널리티 예측을 구해 더 효율적인 쿼리 계획을 생성합니다. RECOMPILE 쿼리 힌트에 대한 자세한 내용은 쿼리 힌트(Transact-SQL)를 참조하세요.

DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');   
SELECT * FROM t    
WHERE c1 > @dt OPTION (RECOMPILE);  

예제

다음 예에서는 SWITCHOFFSET을 사용하여 데이터베이스에 저장된 값과 다른 표준 시간대 오프셋을 표시합니다.

CREATE TABLE dbo.test   
    (  
    ColDatetimeoffset datetimeoffset  
    );  
GO  
INSERT INTO dbo.test   
VALUES ('1998-09-20 7:45:50.71345 -5:00');  
GO  
SELECT SWITCHOFFSET (ColDatetimeoffset, '-08:00')   
FROM dbo.test;  
GO  
--Returns: 1998-09-20 04:45:50.7134500 -08:00  
SELECT ColDatetimeoffset  
FROM dbo.test;  
--Returns: 1998-09-20 07:45:50.7134500 -05:00  

참고 항목

CAST 및 CONVERT(Transact-SQL)
AT TIME ZONE(Transact-SQL)