На одном сервере, когда я запускаю:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)
На другом сервере:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)
ntp
- и посмотрите, что подходит именно вам!»Ответы:
Я подумал, что это может быть полезно:
Есть три места, где часовой пояс может быть установлен в MySQL:
В файле "my.cnf" в разделе [mysqld]
@@ global.time_zone переменная
Чтобы увидеть, какое значение они имеют:
Чтобы установить для него значение, используйте один из них:
(Использование именованных часовых поясов, таких как «Европа / Хельсинки», означает, что вам необходимо правильно заполнить таблицу часовых поясов.)
Имейте в виду, что
+02:00
это смещение.Europe/Berlin
являетсяCEST
часовым поясом (который имеет два смещения) и является часовым временем, которое соответствует определенному смещению.переменная @@ session.time_zone
Чтобы установить его, используйте любой из них:
Оба могут возвращать SYSTEM, что означает, что они используют часовой пояс, установленный в my.cnf.
Чтобы имена часовых поясов работали, необходимо настроить таблицы с информацией о часовых поясах: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Я также упоминаю, как заполнить эти таблицы в этом ответе .
Чтобы получить текущее смещение часового пояса как
TIME
Он вернется 02:00:00, если ваш часовой пояс +2: 00.
Чтобы получить текущую метку времени UNIX:
Чтобы получить столбец отметки времени как отметку времени UNIX
Чтобы получить столбец даты и времени UTC в качестве метки времени UNIX
Примечание. Изменение часового пояса не приведет к изменению сохраненной даты и времени. , но будет отображать другое время-дату для существующих столбцов временной метки, поскольку они внутренне сохраняются как метки времени UTC и внешне отображаются в текущем часовом поясе MySQL.
Я сделал здесь шпаргалку: должен ли MySQL иметь часовой пояс с UTC?
источник
+00:00
это не часовой пояс, это смещение времени. Что происходит с DST? Это остается в +0 круглый год?time_zone="+00:00"
вы устанавливаете часовой пояс, используя смещение от UTC, учитывая, что установленное значение никогда не меняется и что UTC не соответствует DST, я могу предположить, что он остается неизменным в течение всего года.+00:00
похоже на смещение, поэтому странно, что MySQL выбрал его для представления UTC вместо того, чтобы просто использовать строку «UTC». Спасибо за информацию.C:\ProgramData\MySQL\MySQL Server x.x\my.ini
Для тех, кто все еще имеет эту проблему:
Работал на меня. Просто добавьте
?serverTimezone=UTC
в конце.источник
Asia/Ho_Chi_Minh
вместоUTC
BTW, вопрос об изменении часового пояса MySQL. Поэтому, пожалуйста, посмотрите на ответ @Timo. Если у вас проблемы с докером MySQL, добавьте среду TZ, и она должна работать.SET time_zone=...
Когда вы можете настроить сервер часового пояса для MySQL или PHP:
Помните:
Изменить систему часовых поясов. Пример для Ubuntu:
Перезагрузите сервер или вы можете перезапустить Apache 2 и MySQL:
источник
Чтобы установить его для текущей сессии, выполните:
источник
SET time_zone = 'America/Boise'
. Спасибо за ответ, Джеймс Скидмор!SET time_zone = 'UTC';
настройки теряются при перезапуске сервераПросто запустите это на вашем сервере MySQL:
Где +8: 00 будет ваш часовой пояс.
источник
@@session.time_zone
как описано в других ответах, является гораздо лучшим маршрутом.Эта работа для меня для места в Индии:
источник
Вы можете указать часовой пояс сервера по умолчанию при запуске, см. Http://dev.mysql.com/doc/refman/5.1/en/server-options.html и, в частности,
--default-time-zone=timezone
параметр. Вы можете проверить глобальные и сеансовые часовые пояса сустановить одно или оба с помощью
SET
оператора, & c; см. http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html для более подробной информации.источник
Имейте в виду, что «Страна / Зона» иногда не работает ... Эта проблема не зависит от операционной системы, версии MySQL и аппаратного обеспечения - я встречал ее с FreeBSD 4 и Slackware Linux с 2003 года по сегодняшний день. MySQL с версии 3 до последней версии исходного кода. Это ODD, но это случается. Например:
И такое утверждение должно работать:
Но у вас есть эта проблема:
Взгляните на подпапку в вашем каталоге информации о зоне и посмотрите АКТУАЛЬНОЕ имя файла для символической ссылки, в данном случае это EST5EDT. Тогда попробуйте это утверждение:
И это на самом деле работает, как и должно! :) Помните об этом трюке; Я не видел, чтобы это было задокументировано в руководствах MySQL и официальной документации. Но чтение соответствующей документации является обязательной вещью: официальная документация по часовому поясу MySQL 5.5 - и не забывайте загружать данные часового пояса на ваш сервер вот так (запустите от имени пользователя root!):
Трюк номер один - это должно быть сделано именно под пользователем root MySQL. Он может дать сбой или привести к неработающему результату даже от пользователя, который имеет полный доступ к базе данных MySQL - я сам видел сбой.
источник
Если вы используете PDO:
Если вы используете MySQLi:
Подробнее о форматировании смещения здесь: https://www.sitepoint.com/synchronize-php-mysql-timezone-configuration/
источник
Это вопрос 10 лет, но в любом случае вот что сработало для меня. Я использую MySQL 8.0 с Hibernate 5 и SpringBoot 4.
Я попробовал вышеуказанный принятый ответ, но у меня не получилось, у меня сработало следующее:
Если это поможет, не забудьте высказать свое мнение: D
источник
Древний вопрос с еще одним предложением:
Если вы недавно изменили часовой пояс ОС, например, через:
... MySQL (или MariaDB) не заметит, пока вы не перезапустите службу db:
(или)
источник
Если вы используете MySql Workbench, вы можете установить это, открыв представление администратора и выбрав вкладку Advanced. Верхний раздел - «Локализация», и первый флажок должен быть «default-time-zone». Установите этот флажок, а затем введите желаемый часовой пояс, перезагрузите сервер, и все будет хорошо.
источник
Сначала выясните, какой часовой пояс вы можете запросить
Ваш вывод должен быть примерно таким:
Затем, если вы хотите подтвердить, что вы находитесь в каком-то часовом поясе, например, CDT, а не в EST, вы можете проверить, в какое время, по вашему мнению, находится ваш компьютер,
Если это не то время, которое вы хотите, вам нужно изменить его ... все, что вам нужно сделать, это
SET time_zone = timezone_name
. Убедитесь, что он вContinent/City
формате.Если вы находитесь на общем сервере, потому что у вас есть хостинг, пожалуйста, обратитесь к этим ответам относительно изменения файла php.ini или файла .htaccess.
источник
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p E
сначала, а потомSET time_zone = timezone_name
работал нормально.Вы должны установить часовой пояс вашего местоположения. Итак, следуйте нижеприведенному процессу.
Откройте MSQLWorkbench и напишите простую команду sql, подобную этой;
А также ваш URL может быть таким;
источник
Чтобы установить стандартный часовой пояс на MariaDB, вам нужно перейти в файл 50-server.cnf .
Затем вы можете ввести следующую запись в разделе MySQL.
Пример:
Изменение должно быть сделано через файл конфигурации, в противном случае сервер MariaDB сбросит таблицы mysql после перезапуска!
источник
Отредактируйте файл конфигурации MySQL
Прокрутите и добавьте их внизу. Изменить на соответствующий часовой пояс
Перезагрузите сервер
источник
В Windows (IIS), чтобы иметь возможность установить GLOBAL time_zone = 'Europe / Helsinki' (или что-то еще), сначала необходимо заполнить таблицы описания часового пояса MySQL.
Я скачал их по этой ссылке https://dev.mysql.com/downloads/timezones.html
После запуска загруженного SQL-запроса я смог установить глобальный часовой пояс и решить проблему, в которой находился SELECT NOW (); возвращал GMT, а не BST.
источник
В моем случае решение состояло в том, чтобы установить для параметра serverTimezone в расширенных настройках соответствующее значение (CET для моего часового пояса).
Поскольку я использую IntelliJ, я использую его модуль базы данных. При добавлении нового подключения к базе данных и после добавления всех соответствующих параметров на вкладке Общие произошла ошибка на кнопке «Проверить подключение». Опять же, решение состоит в том, чтобы установить параметр serverTimezone во вкладке Advanced.
источник
Если кто-то использует хостинг GoDaddy Shared Hosting, вы можете попробовать следующее решение, работавшее для меня.
При запуске соединения с БД установите команду time_zone в моем объекте PDO, например:
Где "+05: 30" - часовой пояс Индии. Вы можете изменить его в соответствии с вашими потребностями.
После этого; все процессы MySQL, связанные с датой и временем, устанавливаются с требуемым часовым поясом.
Источник: https://in.godaddy.com/community/cPanel-Hosting/How-to-change-TimeZone-for-MySqL/td-p/31861.
источник