Сервер MySQL поддерживает несколько установок часового пояса:
Системный часовой пояс. Когда сервер запускается, он пытается определить часовой
пояс хост-машины и использует это, чтобы установить system_time_zone системная переменная. Значение не изменяется после
того.
Можно установить системный часовой пояс для MySQL Server при запуске с --timezone=timezone_name
опция к mysqld_safe.
Можно также установить это, устанавливая TZ переменная окружения
прежде, чем Вы запустите mysqld.
Допустимые значения для --timezone или TZ системно-зависимы.
Консультируйтесь со своей документацией операционной системы, чтобы видеть, какие значения являются
приемлемыми.
Зона текущего времени сервера. Глобальная переменная time_zone системная переменная указывает на часовой пояс, в котором в
настоящий момент работает сервер. Начальное значение для time_zone'SYSTEM', который указывает,
что часовой пояс сервера является тем же самым как системным часовым поясом.
Начальное глобальное значение часового пояса сервера может быть определено явно при запуске с --default-time-zone=timezone
опция на командной строке, или можно использовать следующую строку в файле опции:
default-time-zone='timezone'
Если Вы имеете SUPER полномочие, можно установить глобальное значение часового пояса
сервера во времени выполнения с этим оператором:
mysql> SET GLOBAL time_zone = timezone;
Часовые пояса для каждого подключения. У каждого клиента, который соединяется, есть
его собственная установка часового пояса, данная сеансом time_zone переменная. Первоначально, переменная сеанса принимает свое
значение от глобальной переменной time_zone переменная, но клиент может изменить свой собственный
часовой пояс с этим оператором:
mysql> SET time_zone = timezone;
Текущая установка часового пояса сеанса влияет на дисплей и хранение временных стоимостей, которые чувствительны
к зоне. Это включает значения, выведенные на экран функциями такой как NOW() или CURTIME(), и значения, сохраненные в и полученный от TIMESTAMP столбцы. Значения для TIMESTAMP столбцы преобразовываются от зоны текущего времени до UTC для
хранения, и от UTC до зоны текущего времени для извлечения.
Установка зоны текущего времени не влияет на значения, выведенные на экран функциями такой как UTC_TIMESTAMP() или значения в DATE, TIME, или
DATETIME столбцы. Ни значения в тех типах данных, сохраненных в UTC; часовой
пояс просит их только, преобразовывая из TIMESTAMP значения. Если Вы хотите
специфичную для локали арифметику для DATE, TIME,
или DATETIME
значения, преобразуйте их в UTC, выполните арифметику, и затем преобразуйте назад.
Текущая стоимость глобальных и специфичных для клиента часовых поясов может быть получена как это:
timezone значения могут быть даны в нескольких форматах, ни один из
которых не является чувствительным к регистру:
Значение 'SYSTEM' указывает, что часовой пояс должен
быть тем же самым как системным часовым поясом.
Значение может быть дано как строка, указывающая на смещение от UTC, такой как
'+10:00' или '-6:00'.
Значение может быть дано как именованный часовой пояс, такой как 'Europe/Helsinki', 'US/Eastern', или 'MET'. Названный часовыми поясами может использоваться только если таблицы
информации о часовом поясе в mysql база данных была создана и заполнена.
Процесс установки MySQL составляет таблицы часового пояса в mysql база данных, но
не загружает их. Следует сделать так вручную использование следующих инструкций. (Если Вы обновляете до MySQL
4.1.3 или позже от более ранней версии, можно составить таблицы, обновляя Ваш mysql
база данных. Используйте инструкции в Разделе
4.4.7, "mysql_upgrade — Таблицы MySQL Check и Upgrade"
. После составления таблиц можно загрузить их.)
Отметить
Загрузка информации о часовом поясе является не обязательно одноразовой работой, потому что
информация иногда изменяется. Например, правила в течение Летнего времени в Соединенных Штатах, Мексике, и
частях Канады изменились в 2007. Когда такие изменения происходят, приложения, которые используют старые
правила, становятся устаревшими, и можно счесть необходимым перезагрузить таблицы часового пояса, чтобы
хранить информацию, используемую Вашим током сервера MySQL. См. примечания в конце этого раздела.
Если у Вашей системы есть своя собственная zoneinfo база данных (набор файлов,
описывающих часовые пояса), следует использовать mysql_tzinfo_to_sql программу для того, чтобы заполнить
таблицы часового пояса. Примерами таких систем является Linux, FreeBSD, Солярис, и Mac OS X. Одно вероятное
расположение для этих файлов /usr/share/zoneinfo каталог. Если у Вашей системы нет
zoneinfo базы данных, можно использовать загружаемый пакет, описанный позже в этом разделе.
mysql_tzinfo_to_sql
программа используется, чтобы загрузить таблицы часового пояса. На командной строке передайте zoneinfo имя пути
к каталогу к mysql_tzinfo_to_sql
и отправьте вывод в mysql программу. Например:
shell> mysql_tzinfo_to_sql /usr/share/zoneinfo |
mysql -u root mysql
mysql_tzinfo_to_sql
читает файлы часового пояса Вашей системы и генерирует SQL-операторы от них. mysql обрабатывает те операторы, чтобы загрузить таблицы
часового пояса.
mysql_tzinfo_to_sql
также может использоваться, чтобы загрузить единственный файл часового пояса или генерировать прыжок вторая
информация:
Загрузить единственный файл часового пояса tz_file это соответствует имени часового пояса tz_name, вызовите mysql_tzinfo_to_sql как это:
shell> mysql_tzinfo_to_sql tz_filetz_name
| mysql -u root mysql
С этим подходом следует выполнить отдельную команду, чтобы загрузить файл часового пояса для каждой
именованной зоны, о которой должен знать сервер.
Если Ваш часовой пояс должен считать в течение секунд прыжка, инициализируйте
прыжок вторая информация как это, где tz_file имя Вашего файла
часового пояса:
shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql
После выполнения mysql_tzinfo_to_sql, лучше перезапускать сервер так,
чтобы это не продолжало использовать любые ранее кэшируемые данные часового пояса.
Если Ваша система является той, у которой нет никакой zoneinfo базы данных (например, Windows или HP-UX), можно
использовать пакет предварительно созданных таблиц часового пояса, который доступен для скачивания в MySQL
Developer Zone:
Этот пакет часового пояса содержит .frm, .MYD, и
.MYI файлы для MyISAM таблицы часового пояса. Эти
таблицы должны быть частью mysql база данных, таким образом, следует поместить
файлы в mysql подкаталог Вашего каталога данных сервера MySQL. Сервер должен быть
остановлен, в то время как Вы делаете это и перезапущенный позже.
Предупреждение
Не используйте загружаемый пакет, если у Вашей системы есть zoneinfo база данных. Используйте mysql_tzinfo_to_sql
утилиту вместо этого. Иначе, можно вызвать различие в datetime, обрабатывающем между MySQL и другими
приложениями на Вашей системе.