In MySQL können Sie eine Sitzungsvariable mit dem Namen Zeitzone festlegen, um die Zeitzone zu ändern. Dies ist nützlich, z.B. wenn Sie Zeitstempel aus einem anderen Land betrachten. Hier ist ein Beispiel:
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)
Ist es möglich, dies in eine Optionsdatei einzufügen, z. .my.cnf?
Wenn ich es versuche, funktioniert es nicht. Alles was ich bekomme ist:
mysql: unknown variable 'time_zone=Brazil/East'
es sollte sein
default_time_zone=Brazil/East
details: http://dev.mysql.com/doc/refman/5.5/de/server-system-variables.html#sysvar_time_zone
Optionsdateiformat = default_time_zone
Ein bisschen spät, aber das könnte trotzdem hilfreich sein:
Wenn Sie die Zeitzone explizit festlegen, vergewissern Sie sich, dass Sie den richtigen Namen für die Zeitzone verwenden. Beachten Sie dabei, dass viele davon veraltet sind. Sie können https://en.wikipedia.org/wiki/List_of_tz_database_time_zones verwenden, um dies zu bestätigen.
In meinem Fall funktionierte der veraltete Zeitzonenname unter MySQL 5.7 nicht, als er in meiner Datei mysqld.cnf unter [mysqld] eingefügt wurde. Die Verwendung des neuen Zeitzonennamens und der Neustart des MySQL-Dienstes funktionierten.
Für den Benutzer @kev sollte hier America/Sao_Paulo funktionieren, anstatt Brazil/East .
Für MAMP habe ich default_time_zone=-03:00
unter [mysqld]
in /Applications/MAMP/conf/my.cnf
hinzugefügt.
Ich würde den folgenden Fehler für Brasilien/Ost erhalten, wahrscheinlich, weil er veraltet ist ( https://en.wikipedia.org/wiki/List_of_tz_database_time_zones ):
[ERROR] Fatal error: Illegal or unknown default time zone 'Brazil/East'
Bearbeiten Sie Folgendes:
nano /etc/mysql/conf.d/mysql.cnf && systemctl restart mysql ; systemctl status mysql
MySQL.cnf:
[mysql]
default_time_zone=America/Vancouver
Aktuelle Zeitzonenformate finden Sie hier -> https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
In ~/.my.cnf
:
[mysql]
init_command="SET time_zone='Brazil/East'"
Ich bin nicht sicher, was sich in Xampp geändert hat, aber diese Lösung funktioniert nur, wenn Sie diese Zeile an der richtigen Stelle platzieren. Vertrauen Sie mir, ich habe es oft versucht und musste ziemlich gründlich suchen, um diese Lösung zu finden.
default-time-zone = "+00:00"
Beispiel:
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
Außerdem sollten Sie sicherstellen, dass Ihre Datenbank mit den richtigen Zeitzonennamen gefüllt ist, wenn Sie "America/Los_Angeles" verwenden. Ich würde empfehlen, den Offset zu verwenden. Eigentlich würde ich empfehlen, UTC als Basis zu verwenden und dann die Zeit von diesem Zeitpunkt an für Benutzer anhand ihrer Zeitzone umzurechnen, was Ihnen später viele Kopfschmerzen erspart und Ihre Datenbank schön und einheitlich hält. Schauen Sie sich die Anleitung an, die ich unten verlinkt habe, und erläuterte sie mir sehr deutlich. Es gibt viele Möglichkeiten, es zu codieren, aber diese Vorgehensweise erspart Ihnen viele Probleme.