SWITCHOFFSET(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
저장된 표준 시간대 오프셋에서 지정된 새 표준 시간대 오프셋으로 변경된 datetimeoffset 값을 반환합니다.
모든 Transact-SQL 날짜/시간 데이터 형식 및 함수에 대한 개요는 날짜/시간 데이터 형식 및 함수(Transact-SQL)를 참조하세요.
구문
SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )
인수
datetimeoffset_expression
datetimeoffset(n) 값으로 확인할 수 있는 식입니다.
timezoneoffset_expression
[+|-]TZH:TZM 또는 부호 있는 정수(분) 형식의 식으로, 표준 시간대 오프셋을 나타내며 일광 절약 시간제를 인식하고 이에 따라 조정되는 것으로 간주됩니다.
반환 형식
datetimeoffset을 datetimeoffset_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