Перейти к основному содержимому
Версия: 2.0.x

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: Преобразование даты-времени из Шанхая в Лос-Анджелес.

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: Преобразование даты из Шанхая в Лос-Анджелес.

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: Преобразование даты-времени из 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