Ответ 1
он должен быть
default_time_zone=Brazil/East
подробнее: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone
Формат файла опций = default_time_zone
В MySQL вы можете установить переменную сеанса с именем time_zone, чтобы изменить часовой пояс. Это полезно, например, при просмотре временных меток из другой страны. Вот пример:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2010-12-30 18:59:18 |
+---------------------+
1 row in set (0.00 sec)
mysql> set time_zone='Brazil/East';
Query OK, 0 rows affected (0.00 sec)
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2010-12-30 09:59:29 |
+---------------------+
1 row in set (0.00 sec)
Можно ли поместить это в файл опций, например..my.cnf?
Когда я пытаюсь, он не работает. Все, что я получаю, это:
mysql: unknown variable 'time_zone=Brazil/East'
он должен быть
default_time_zone=Brazil/East
подробнее: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone
Формат файла опций = default_time_zone
Я не уверен, что изменилось в Xampp, но это решение работает, только если вы поместите эту строку в нужное место. Поверьте мне, я много раз пробовал и должен был провести тщательный поиск, чтобы найти это решение.
default-time-zone = "+00:00"
Пример:
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-time-zone = "+00:00" <--- Place here.
log_error = "mysql_error.log"
https://community.apachefriends.org/f/viewtopic.php?f=16&t=47656
Кроме того, вы захотите убедиться, что ваша база данных заполнена соответствующими именами часовых поясов, если вы собираетесь использовать "America/Los_Angeles". Я бы рекомендовал использовать смещение. Я бы рекомендовал использовать UTC в качестве базы, а затем преобразовать свое время с этого момента для пользователей на основе их часового пояса, что позволит вам сэкономить много головных болей позже и сохранить вашу базу данных красивой и единообразной. Ознакомьтесь с руководством, которое я привел ниже, и объяснил это очень четко для меня, и я использовал эту систему. Существует много способов кодировать его, но этот подход сэкономит вам много проблем.
Немного поздно, но это может быть полезно, тем не менее:
При явной установке часового пояса подтвердите, что вы используете правильное имя часового пояса, учитывая, что многие из них устарели. Вы можете использовать https://en.wikipedia.org/wiki/List_of_tz_database_time_zones для подтверждения.
В моем случае, используя MySQL 5.7, устаревшее имя часового пояса не работало при добавлении его ниже [mysqld] в моем файле mysqld.cnf. Использование нового имени часового пояса и перезапуск службы mysql сработало.
Так что для пользователя @kev здесь, использование America/Sao_Paulo должно работать, вместо использования Brazil/East.
Для MAMP я добавил default_time_zone=-03:00
в [mysqld]
в /Applications/MAMP/conf/my.cnf
Я получил бы следующую ошибку для Бразилии/Востока, вероятно, потому что она устарела (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones):
[ERROR] Fatal error: Illegal or unknown default time zone 'Brazil/East'
В ~/.my.cnf
:
[mysql]
init_command="SET time_zone='Brazil/East'"
Отредактируйте следующее:
nano /etc/mysql/conf.d/mysql.cnf && systemctl restart mysql ; systemctl status mysql
MySQL.cnf:
[mysql]
default_time_zone=America/Vancouver
Смотрите здесь для текущих форматов часовых поясов → https://en.wikipedia.org/wiki/List_of_tz_database_time_zones