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


SWITCHOFFSET (Transact-SQL)

Относится к:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsАналитическая платформа (PDW)SQL база данных в Microsoft Fabric

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

Общие сведения обо всех 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 запроса см. в разделе "Подсказки запросов".

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