SWITCHOFFSET (Transact-SQL)

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

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

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

Синтаксис

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

Аргументы

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

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

Возвращаемый тип

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

Замечания

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)