SWITCHOFFSET (Transact-SQL)

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

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

Значок ссылки на раздел Синтаксические обозначения Transact-SQL

Синтаксис

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

Аргументы

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

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

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

datetimeoffset с точностью в долях секунд аргумента DATETIMEOFFSET.

Замечания

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

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

Использование SWITCHOFFSET с функцией GETDATE() может вызвать замедление выполнения запроса, поскольку оптимизатор запросов не может получить точные оценки количества элементов для значения GETDATE. Рекомендуется заранее вычислить значение GETDATE, а затем указать это значение в запросе, как показано в следующем примере. Кроме того, с помощью указания запроса OPTION (RECOMPILE) можно вынудить оптимизатор запросов повторно компилировать план запроса при каждом выполнении одного и того же запроса. В этом случае оптимизатор будет иметь точные оценки количества элементов для GETDATE(), что позволит ему сформировать более эффективный план запроса.

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)