The Функция SWITCHOFFSET настраивает значение ввода DATETIMEOFFSET на заданный часовой пояс , сохраняя при этом значение UTC. Синтаксис: SWITCHOFFSET (datetimeoffset_value, time_zone). Например, следующий код корректирует текущую систему значение DateTimeOffset для часового пояса GMT +05: 00:
ВЫБОР SWITCHOFFSET (SYSDATETIMEOFFSET(), '-05: 00');
Так что, если текущая система значение DateTimeOffset 12 февраля 2009 10: 00: 00,0000000 -08: 00, этот код возвращает значение Февраль 12, 2009 13: 00: 00,0000000 -05: 00.
Функция TODATETIMEOFFSET устанавливает смещение часового пояса даты ввода и значение времени .Его синтаксис: TODATETIMEOFFSET (date_and_time_value, time_zone).
Эта функция отличается от SWITCHOFFSET несколькими способами. Во-первых, не ограничивается значением datetimeoffset в качестве входных данных; скорее принимает любые данные о дате и времени тип. Во-вторых, он не пытается настроить время, основываясь на разнице зоны времени между исходным значением и заданной временной зоны, но вместо этого просто возвращает дату ввода и значение времени с заданным временем зоны в качестве значения DateTimeOffset ,
Основная цель функции TODATETIMEOFFSET является преобразования типов, которые не временная зона известно, чтобы DateTimeOffset по заданному смещение часового пояса. Если данная дата и время значения является DateTimeOffset, функции TODATETIMEOFFSET изменяет значение DateTimeOffset, основываясь на же исходной локальном значении даты и время плюс новой данные временной зоны смещения.
Например, текущая система значение DateTimeOffset является 12 февраля, 2009 10: 00: 00,0000000 -08: 00, и вы запустить следующий код:
ЗЕЬЕСТ TODATETIMEOFFSET (SYSDATETIMEOFFSET(), '-05: 00');
Значение 12 февраля 2009 г. 10: 00: 00.0000000 -05: 00 возвращается. Помните, что функция SWITCHOFFSET вернулся 12 февраля 2009 13: 00: 00.0000000 -05: 00, потому что скорректировал время на основе разницы времени зоны между входом (-08: 00), и указанный часовой пояс (-05: 00).
Как уже упоминалось ранее, вы можете использовать функцию TODATETIMEOFSFSET с любыми данными типа даты и времени в качестве входных данных. Для Например, следующий код принимает текущую системную дату и значение времени и возвращает его в виде значения DateTimeOffset с временной зоной -00: 05:
ВЫБОР TODATETIMEOFFSET (SYSDATETIME(), «-05: 00');
Спасибо за ответ :) – frankadelic