Spec-Zone.ru › MariaDB

Часовые пояса

MariaDB отслеживает несколько настроек часовых поясов.

Установка часового пояса

Переменная среды time_zone — основной способ установки часового пояса. Она может быть задана в одном из следующих форматов:

  • Значение по умолчанию — SYSTEM, которое указывает, что будет использоваться системный часовой пояс, определенный в переменной среды system_time_zone. Дополнительная информация приведена в разделе Системный часовой пояс ниже.
  • Можно также использовать смещение от Координированного универсального времени (UTC), например, +5:00 или -9:00.
  • Если таблицы часовых поясов в базе данных mysql были загружены, допустимо использовать имя часового пояса, например, America/New_York, Africa/Johannesburg, или Europe/Helsinki. Дополнительная информация приведена в разделе Таблицы часовых поясов mysql ниже.

В MariaDB можно установить два часовых пояса — глобальный серверный часовой пояс и часовой пояс текущей сессии. Также может быть важен системный часовой пояс.

Глобальный серверный часовой пояс

Глобальный серверный часовой пояс можно изменить во время запуска сервера, задав параметр --default-time-zone в командной строке или в группе параметров сервера группа параметров в файле опций файл опций. Например:

[mariadb]
...
default_time_zone = 'America/New_York'

Глобальный серверный часовой пояс также можно динамически изменить, установив переменную среды time_zone для учетной записи пользователя, имеющей привилегию SUPER. Например:

SET GLOBAL time_zone = 'America/New_York';

Текущий глобальный серверный часовой пояс можно просмотреть, посмотрев глобальное значение переменной среды time_zone. Например:

SHOW GLOBAL VARIABLES LIKE 'time_zone';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| time_zone     | SYSTEM |
+---------------+--------+

Часовой пояс сессии

Каждая сессия, подключенная к серверу, также имеет свой часовой пояс. Этот часовой пояс изначально наследуется из глобального значения переменной среды time_zone, которая устанавливает значение переменной для сессии.

Часовой пояс сессии можно динамически изменить, установив переменную среды time_zone. Например:

SET time_zone = 'America/New_York';

Текущий часовой пояс сессии можно просмотреть, посмотрев значение переменной среды time_zone для сессии. Например:

SHOW SESSION VARIABLES LIKE 'time_zone';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| time_zone     | SYSTEM |
+---------------+--------+

Системный часовой пояс

Системный часовой пояс определяется при запуске сервера и устанавливает значение переменной среды system_time_zone. Системный часовой пояс обычно считывается из среды операционной системы. Вы можете изменить системный часовой пояс несколькими способами, например:

  • Если вы запускаете сервер с помощью mysqld_safe, то можете установить системный часовой пояс с помощью параметра --timezone в командной строке или в группе параметров [mysqld_safe] в файле опций группа параметров в файле опций файл опций. Например:
[mysqld_safe]
timezone='America/New_York'
  • Если вы используете операционную систему семейства Unix, то можете установить системный часовой пояс, задав переменную среды TZ переменная среды в вашей оболочке перед запуском сервера. Например:
$ export TZ='America/New_York'
$ service mysql start
  • На некоторых системах Linux можно изменить часовой пояс всей системы, сделав символическую ссылку /etc/localtime на желаемый часовой пояс. Например:
$ sudo rm /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  • На некоторых системах Linux на основе Debian можно изменить часовой пояс всей системы, выполнив следующую команду:
sudo dpkg-reconfigure tzdata
  • На системах Linux, использующих systemd, можно изменить часовой пояс всей системы, используя утилиту timedatectl. Например:
sudo timedatectl set-timezone America/New_York

Влияние часового пояса

Влияние часового пояса на функции

На некоторые функции влияют настройки часового пояса. К ним относятся:

  • NOW()
  • SYSDATE()
  • CURDATE()
  • CURTIME()
  • UNIX_TIMESTAMP()

На некоторые функции часовой пояс не влияет. К ним относятся:

  • UTC_DATE()
  • UTC_TIME()
  • UTC_TIMESTAMP()

Влияние часового пояса на типы данных

На некоторые типы данных влияют настройки часового пояса.

  • TIMESTAMP — Подробная информация о том, как этот тип данных затрагивается настройками часовых поясов, содержится в разделе TIMESTAMP: Часовые пояса.
  • DATETIME — Подробная информация о том, как этот тип данных затрагивается настройками часовых поясов, содержится в разделе DATETIME: Часовые пояса.

Таблицы часовых поясов mysql

База данных mysql содержит ряд таблиц часовых поясов:

  • time_zone
  • time_zone_leap_second
  • time_zone_name
  • time_zone_transition
  • time_zone_transition_type

По умолчанию эти таблицы часовых поясов в базе данных mysql создаются, но не заполняются.

Если вы используете операционную систему семейства Unix, то можете заполнить эти таблицы с помощью утилиты mariadb-tzinfo-to-sql, которая использует данные zoneinfo, доступные в Linux, Mac OS X, FreeBSD и Solaris.

Если вы используете Windows, вам потребуется импортировать предварительно заполненные таблицы часовых поясов. Они доступны на зеркалах MariaDB.

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

См. также

  • LinuxJedi in Spacetime: Properly Handling Time and Date (видео)
Содержимое, воспроизводимое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/time-zones/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API