Перейти к основному содержимому

convert_tz

Описание

Преобразует значение DATE или DATETIME из одного часового пояса в другой.

Эта функция может возвращать разные результаты для разных часовых поясов. Для получения дополнительной информации см. Настройка часового пояса.

Синтаксис

DATETIME CONVERT_TZ(DATETIME|DATE dt, VARCHAR from_tz, VARCHAR to_tz)

Параметры

  • dt: значение DATE или DATETIME для преобразования.

  • from_tz: исходный часовой пояс. Поддерживается VARCHAR. Часовой пояс может быть представлен в двух форматах: один — база данных часовых поясов (например, Asia/Shanghai), а другой — смещение UTC (например, +08:00).

  • to_tz: целевой часовой пояс. Поддерживается VARCHAR. Его формат такой же, как у from_tz.

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

Возвращает значение типа данных DATETIME. Если входное значение имеет тип DATE, оно будет преобразовано в значение DATETIME. Эта функция возвращает NULL, если любой из входных параметров недействителен или равен NULL.

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

Для базы данных часовых поясов см. Список часовых поясов базы данных tz (в Википедии).

Примеры

Пример 1: Преобразование datetime из Шанхая в Лос-Анджелес.

select convert_tz('2019-08-01 13:21:03', 'Asia/Shanghai', 'America/Los_Angeles');
+---------------------------------------------------------------------------+
| convert_tz('2019-08-01 13:21:03', 'Asia/Shanghai', 'America/Los_Angeles') |
+---------------------------------------------------------------------------+
| 2019-07-31 22:21:03 |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec) |

Пример 2: Преобразование date из Шанхая в Лос-Анджелес.

select convert_tz('2019-08-01', 'Asia/Shanghai', 'America/Los_Angeles');
+------------------------------------------------------------------+
| convert_tz('2019-08-01', 'Asia/Shanghai', 'America/Los_Angeles') |
+------------------------------------------------------------------+
| 2019-07-31 09:00:00 |
+------------------------------------------------------------------+
1 row in set (0.00 sec)

Пример 3: Преобразование datetime из UTC+08:00 в Лос-Анджелес.

select convert_tz('2019-08-01 13:21:03', '+08:00', 'America/Los_Angeles');
+--------------------------------------------------------------------+
| convert_tz('2019-08-01 13:21:03', '+08:00', 'America/Los_Angeles') |
+--------------------------------------------------------------------+
| 2019-07-31 22:21:03 |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)

Ключевые слова

CONVERT_TZ, timezone, time zone