다음을 통해 공유


SWITCHOFFSET(Transact-SQL)

적용 대상:SQL 서버Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics분석 플랫폼 시스템(PDW)Microsoft Fabric의 SQL 데이터베이스

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

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

Transact-SQL 구문 표기 규칙

구문

SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )

인수

datetimeoffset_expression

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

timezoneoffset_expression

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

반환 형식

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

설명

원래 저장된 표준 시간대 오프셋과 다른 표준 시간대 오프셋으로 SWITCHOFFSET 값을 선택하는 데 사용합니다. SWITCHOFFSET 는 저장된 time_zone 값을 업데이트하지 않습니다.

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

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

DECLARE @dt AS 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