Изменение часового пояса MySQL? - PullRequest
43 голосов
/ 10 августа 2010

Как мне изменить мой часовой пояс, который в настоящее время находится в UTC, на GMT +1, какая строка правильная, и мне просто нужно ввести ее при выполнении phpMyAdmin SQL?

Мой хозяин только что дал мне эту ссылку http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html и ушел, поэтому я немного растерялся, спасибо

Ответы [ 7 ]

40 голосов
/ 21 мая 2012

Самым простым способом сделать это, как отметил Умар, является, например,

mysql> SET GLOBAL time_zone = 'America/New_York';

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

# 1298 - Неизвестный или неправильный часовой пояс

Если вы видите это, вам может потребоватьсязапустить перевод tzinfo_to_sql ... это легко сделать, но не очевидно.В командной строке linux введите:

mysql_tzinfo_to_sql /usr/share/zoneinfo/|mysql -u root mysql -p

Укажите свой пароль root (MySQL root, а не root Linux), и он загрузит любые определения из вашей зоныinfo в mysql.Затем вы можете вернуться и запустить свой

mysql> SET GLOBAL time_zone = timezone;
35 голосов
/ 10 августа 2010

введите команду:

SET time_zone = 'America/New_York';

(или любой часовой пояс GMT + 1: .: http://www.php.net/manual/en/timezones.php)

Это команда для установки часового пояса MySQL для отдельного клиента, при условии, что ваши клиенты распределены по нескольким часовым поясам.

Эта команда должна выполняться перед каждой командой SQL, включающей даты. Если ваши запросы проходят через класс, это легко реализовать.

22 голосов
/ 20 апреля 2012

Хотя ответ Брайона полезен, я просто добавлю, что его ссылка относится к именам часовых поясов PHP, которые не совпадают с именами часовых поясов MySQL.

Если вы хотите установить часовой пояс для отдельной сессии на GMT + 1 (UTC + 1, если быть точным), просто используйте строку «+01: 00» в этой команде.Т.е.:

SET time_zone = '+01:00';

Чтобы узнать, какой часовой пояс использует ваш сеанс MySQL, просто выполните это:

SELECT @@global.time_zone, @@session.time_zone;

Это здоровоссылка с более подробной информацией: MySQL 5.5 Ссылка на часовые пояса

5 голосов
/ 02 февраля 2013

Вот как синхронизировать часовые пояса PHP (> = 5.3) и MySQL для каждой сессии и пользовательских настроек. Поместите его туда, где он работает, когда вам нужно установить и синхронизировать часовые пояса.

date_default_timezone_set($my_timezone);
$n = new \DateTime();
$h = $n->getOffset()/3600;
$i = 60*($h-floor($h));
$offset = sprintf('%+d:%02d', $h, $i);
$this->db->query("SET time_zone='$offset'");

Где $ my_timezone - один из списка часовых поясов PHP: http://www.php.net/manual/en/timezones.php

Часовой пояс PHP должен быть преобразован в смещение часов и минут для MySQL. Это то, что делают строки 1-4.

4 голосов
/ 30 августа 2010

Если у вас есть привилегия SUPER, вы можете установить значение часового пояса глобального сервера во время выполнения с помощью следующего оператора:

mysql> SET GLOBAL time_zone = timezone;
1 голос
/ 02 сентября 2016

Если SET time_zone или SET GLOBAL time_zone не работают, вы можете изменить их следующим образом:

  • Изменение системы часовых поясов, например: ubuntu ... $ sudo dpkg-reconfigure tzdata

  • Перезагрузите сервер или вы можете перезапустить apache2 и mysql (/etc/init.d/mysql restart)

0 голосов
/ 05 сентября 2018

Это отлично работает

<?php
      $con=mysqli_connect("localhost","my_user","my_password","my_db");
      $con->query("SET GLOBAL time_zone = 'Asia/Calcutta'");
      $con->query("SET time_zone = '+05:30'");
      $con->query("SET @@session.time_zone = '+05:30'");
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...