2010-08-10 3 views
39

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

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

ответ

30

выдайте команду:

SET time_zone = 'America/New_York'; 

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

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

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

+3

Это автоматически изменит дату/т ime, полученное из всех полей TIMESTAMP, но не полей DATETIME. –

+0

Он не изменит значения, хранящиеся в полях DATETIME или TIMESTAMP. –

+6

это не работает для меня. II получить «Код ошибки: 1298. Неизвестный или неправильный часовой пояс:« Америка/Нью-Йорк » « – user1028741

3

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

mysql> SET GLOBAL time_zone = timezone; 
+1

А что если не является ли суперадмин привилегия? –

+0

просто 'SET time_zone = часовой пояс;' –

18

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

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

SET time_zone = '+01:00';

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

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

Это большая ссылка с более подробной информацией: MySQL 5.5 Reference on Time Zones

+2

SELECT @@ global.time_zone, @@ session.time_zone, @@ global.system_time_zone; – zzapper

+1

Хорошо, я просто попробовал «Америку/Sao_Paulo» без успеха ... – Lennon

36

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

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 

Предоставьте корневой пароль (корень MySQL, а не корневой Linux), и она будет загружать любые определения в вашем ZoneInfo в MySQL. После этого вы можете вернуться назад и запустить

mysql> SET GLOBAL time_zone = timezone; 
+0

Спасибо. Информация о стороне Linux работает для меня. –

+0

Работал отлично на centOS 7.1 – ryryan

+0

Как насчет пользователей в окнах получать "# 1298 - Неизвестный или неправильный часовой пояс"? – DelightedD0D

5

Вот как синхронизировать 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

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

+0

Не можете ли вы получить то же самое с supersan

1

Если SET TIME_ZONE или SET GLOBAL TIME_ZONE не работает, вы можете изменить, как показано ниже:

  • Изменить систему часового пояса, например: убунту ... $ Sudo DPKG-переконфигурировать tzdata

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

Смежные вопросы