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