Поделиться через


SWITCHOFFSET (Transact-SQL)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Возвращает значение смещения часового пояса с типом данных datetimeoffset, изменившееся с хранящегося на новое заданное смещение часового пояса.

Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).

Соглашения о синтаксисе Transact-SQL

Синтаксис

SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   

Аргументы

datetimeoffset_expression
Выражение, которое можно привести к значению типа datetimeoffset(n).

timezoneoffset_expression
Выражение в формате [+|-]TZH:TZM или целочисленное значение со знаком (в минутах), представляющее смещение часового пояса. Предполагается, что оно настроено и учитывает переход на летнее время.

Тип возвращаемых данных

Значение datetimeoffset с точностью в долях секунд, заданной в аргументе datetimeoffset_expression.

Замечания

SWITCHOFFSET используется для выбора значения datetimeoffset в смещении часового пояса, отличающегося от первоначально сохраненного смещения часового пояса. SWITCHOFFSET не обновляет хранимое значение time_zone.

Функция SWITCHOFFSET может использоваться для обновления столбца datetimeoffset.

Использование SWITCHOFFSET с функцией GETDATE() может привести к тому, что запрос будет выполняться медленно. Это происходит потому, что оптимизатор запросов не может получить точные оценки количества элементов для значений даты и времени. Чтобы устранить эту проблему, используйте указание запроса 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)