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


Функция ER CHANGETIMEZONE

Функция CHANGETIMEZONE возвращает значение даты и времени в формате UTC (среднее время по Гринвичу, GMT), которое преобразуется из заданного значения даты/времени одного часового пояса в значение даты/времени другого часового пояса.

Синтаксис

CHANGETIMEZONE (datetime, base time zone, target time zone)

Аргументы

datetime: Дата и время

Значение типа дата/время в часовом поясе UTC, представляющее значение даты/времени, которое требуется преобразовать.

base time zone: Строка

Имя часового пояса, для которого заданное значение даты/времени смещается до преобразования.

target time zone: Строка

Имя часового пояса, в которое смещается преобразованное значение даты/времени во время преобразования.

Возвращаемые значения

DateTime

Итоговое значение даты/времени в часовом поясе UTC.

Примечания по использованию

Для указания исходных и целевых часовых поясов можно использовать имена часовых поясов, указанныхInternet Assigned Numbers Authority (IANA) или поддерживаемых Microsoft Windows.

Во время выполнения выдается исключение "Часовой пояс <название часового пояса> не существует", если предоставленное имя не найдено в списке IANA или в реестре Windows.

Для часовых поясов, в которых есть переход на летнее время, при преобразовании учитывается смещение экономии летнего времени в формате UTC. В процессе преобразования используется последняя доступная информация об этом смещении.

Пример 1

В этом примере используются имена часовых поясов для Windows.

Вы настраиваете источник данных DSX типа Вычисляемое поле. В нем содержится следующее выражение.

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "E. Europe Standard Time", "Hawaiian Standard Time"), "O")
)

При настройке выражения источника данных DSY типа Вычисляемое поле как DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), источник данных DSX возвращает текст 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Этот текст показывает, что разница времени между двумя предоставленными часовыми поясами 1 июня превышает 24 часа. Таким образом, преобразованное значение даты/времени — на один день раньше указанного значения даты/времени, так как базовый часовой пояс опережает целевой часовой пояс.

При настройке выражения источника данных DSY типа Вычисляемое поле как DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), источник данных DSX возвращает текст 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Этот текст показывает, что разница времени между двумя предоставленными часовыми поясами 1 декабря меньше 24 часов. Таким образом, преобразованное значение даты/времени совпадает с данным значением даты/времени.

Примечание

Одно и то же выражение возвращает разное расхождение между предоставленными и преобразованным значениями даты/времени для одной и той же пары часовых поясов, так как для предоставленных часовых поясов в заданное время/дату будет разное смещение летнего времени UTC.

Пример 2

В этом примере используются имена часовых поясов IANA.

Вы настраиваете источник данных DSX типа Вычисляемое поле. В нем содержится следующее выражение.

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "Europe/Athens", "US/Hawaii"), "O")
)

При настройке выражения источника данных DSY типа Вычисляемое поле как DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), источник данных DSX возвращает текст 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Этот текст показывает, что разница времени между двумя предоставленными часовыми поясами 1 июня превышает 24 часа. Таким образом, преобразованное значение даты/времени — на один день раньше указанного значения даты/времени, так как базовый часовой пояс опережает целевой часовой пояс.

При настройке выражения источника данных DSY типа Вычисляемое поле как DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), источник данных DSX возвращает текст 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Этот текст показывает, что разница времени между двумя предоставленными часовыми поясами 1 декабря меньше 24 часов. Таким образом, преобразованное значение даты/времени совпадает с данным значением даты/времени.

Пример 3

Вы настраиваете источник данных DSX типа Вычисляемое поле. В нем содержится следующее выражение.

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "US/Hawaii", "Europe/Athens"), "O")
)

При настройке выражения источника данных DSY типа Вычисляемое поле как DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), источник данных DSX возвращает текст 2021-06-01T12:55:00.0000000+00:00 -> 2021-06-02T01:55:00.0000000+00:00'. Этот текст показывает, что разница времени между двумя предоставленными часовыми поясами 1 июня превышает 24 часа. Таким образом, преобразованное значение даты/времени — на один день позже указанного значения даты/времени, так как целевой часовой пояс опережает базовый часовой пояс.

Пример 4

Можно получить отметку даты/времени из внешнего источника в виде текста, который не содержит сведений о часовом поясе. Однако может быть известен часовой пояс, в котором осуществляется находится источник. Например, вы получаете метку даты/времени 01/12/2021 12:55:00 из службы, управляемой в Испании. Чтобы правильно сохранить значение даты/времени в базе данных, необходимо выполнить следующее преобразование:

  • Настройте источник данных DSY для типа Вычисляемое поле , чтобы преобразовать отметку даты/времени из текста в значение даты/времени в формате UTC.

    DATETIMEVALUE ("01/12/2021 12:55:00", "dd/MM/yyyy HH:mm:ss", "ES")

  • Настройте источник данных DSX для типа Вычисляемое поле для смещения преобразованного значения даты/времени в UTC как значение даты/времени для часового пояса внешнего источника.

    CHANGETIMEZONE(DSY, "Romance Standard Time", "GMT Standard Time")

Примечание

При использовании функции CHANGETIMEZONE для преобразования даты/времени имейте в виду, что все значения даты/времени хранятся в базе данных в качестве значения часового пояса UTC. Если это значение может быть представлено на страницах приложения, оно преобразуется. Преобразование учитывает часовой пояс, который устанавливается в качестве предпочитаемого для пользователя приложения, выполнившего вход в систему.

Дополнительные ресурсы

Функции даты и времени