Auf einem Server, wenn ich laufe:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)
Auf einem anderen Server:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)
ntp
- und sehen Sie, was für Sie richtig ist!"Antworten:
Ich dachte, das könnte nützlich sein:
Es gibt drei Stellen, an denen die Zeitzone in MySQL festgelegt werden kann:
In der Datei "my.cnf" im Abschnitt [mysqld]
@@ global.time_zone Variable
Um zu sehen, auf welchen Wert sie eingestellt sind:
Verwenden Sie einen der folgenden Werte, um einen Wert festzulegen:
(Die Verwendung benannter Zeitzonen wie "Europa / Helsinki" bedeutet, dass eine Zeitzonentabelle ordnungsgemäß ausgefüllt sein muss.)
Denken Sie daran, dass dies
+02:00
ein Versatz ist.Europe/Berlin
ist eine Zeitzone (mit zwei Offsets) undCEST
eine Uhrzeit, die einem bestimmten Offset entspricht.@@ session.time_zone Variable
Um es einzustellen, verwenden Sie eine der folgenden Optionen:
Beide geben möglicherweise SYSTEM zurück, was bedeutet, dass sie die in my.cnf festgelegte Zeitzone verwenden.
Damit Zeitzonennamen funktionieren, müssen Sie Ihre Zeitzoneninformationstabellen einrichten, die ausgefüllt werden müssen: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Ich erwähne auch, wie diese Tabellen in dieser Antwort ausgefüllt werden .
Um den aktuellen Zeitzonenversatz als zu erhalten
TIME
Es wird 02:00:00 zurückgegeben, wenn Ihre Zeitzone +2: 00 ist.
So rufen Sie den aktuellen UNIX-Zeitstempel ab:
So rufen Sie die Zeitstempelspalte als UNIX-Zeitstempel ab
So rufen Sie eine UTC-Datums- / Uhrzeitspalte als UNIX-Zeitstempel ab
Hinweis: Durch Ändern der Zeitzone wird die gespeicherte Datums- oder Zeitstempel nicht geändert , es wird jedoch eine andere Datums- / Uhrzeitangabe für vorhandene Zeitstempelspalten angezeigt, da diese intern als UTC-Zeitstempel gespeichert und in der aktuellen MySQL-Zeitzone extern angezeigt werden.
Ich habe hier ein Cheatsheet erstellt: Sollte die Zeitzone von MySQL auf UTC eingestellt sein?
quelle
+00:00
ist keine Zeitzone, sondern ein Zeitversatz. Was passiert mit DST? Bleibt es das ganze Jahr über bei +0?time_zone="+00:00"
der Zeitzone einen Versatz von UTC festlegen, da sich der eingestellte Wert nie ändert und UTC nicht der Sommerzeit folgt. Ich kann davon ausgehen, dass er das ganze Jahr über gleich bleibt.+00:00
sieht aus wie ein Offset. Es ist also seltsam, dass MySQL dies gewählt hat, um UTC darzustellen, anstatt nur die Zeichenfolge "UTC" selbst zu verwenden. Danke für die Information.C:\ProgramData\MySQL\MySQL Server x.x\my.ini
Für alle, die dieses Problem noch haben:
Hat für mich gearbeitet. Einfach
?serverTimezone=UTC
am Ende anhängen .quelle
Asia/Ho_Chi_Minh
anstelle vonUTC
BTW verwenden, die Frage ist über das Ändern der MySQL-Zeitzone. Schauen Sie sich also bitte die Antwort von @Timo an. Wenn Sie Probleme mit dem MySQL-Docker haben, fügen Sie eine TZ-Umgebung hinzu, und es sollte funktionieren.SET time_zone=...
Wenn Sie den Zeitzonenserver für MySQL oder PHP konfigurieren können:
Merken:
Zeitzonensystem ändern. Beispiel für Ubuntu:
Starten Sie den Server neu oder starten Sie Apache 2 und MySQL neu:
quelle
Gehen Sie wie folgt vor, um es für die aktuelle Sitzung festzulegen:
quelle
SET time_zone = 'America/Boise'
. Danke für die Antwort, James Skidmore!SET time_zone = 'UTC';
Einstellung geht beim Neustart des Servers verlorenFühren Sie dies einfach auf Ihrem MySQL-Server aus:
Wobei +8: 00 Ihre Zeitzone ist.
quelle
@@session.time_zone
wie in anderen Antworten beschrieben ist eine viel bessere Route.Diese Arbeit für mich für einen Standort in Indien:
quelle
Sie können die Standardzeitzone des Servers beim Starten angeben, siehe http://dev.mysql.com/doc/refman/5.1/en/server-options.html und speziell die
--default-time-zone=timezone
Option. Sie können die globalen Zeitzonen und die Sitzungszeitzonen mit überprüfensetze eines oder beide mit der
SET
Anweisung & c; Weitere Informationen finden Sie unter http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html .quelle
Denken Sie daran, dass 'Land / Zone' manchmal nicht funktioniert ... Dieses Problem ist nicht vom Betriebssystem, der MySQL-Version und der Hardware abhängig - ich habe es seit FreeBSD 4 und Slackware Linux im Jahr 2003 bis heute kennengelernt. MySQL von Version 3 bis zum neuesten Quell-Trunk. Es ist ODD, aber es passiert. Zum Beispiel:
Und eine solche Aussage soll funktionieren:
Aber Sie haben dieses Problem:
Sehen Sie sich den Unterordner in Ihrem Zoneninformationsverzeichnis an und sehen Sie den IST-Dateinamen für Symlink. In diesem Fall ist es EST5EDT. Versuchen Sie stattdessen diese Aussage:
Und es funktioniert tatsächlich so, wie es soll! :) Behalte diesen Trick im Hinterkopf; Ich habe nicht gesehen, dass es in MySQL-Handbüchern und in der offiziellen Dokumentation dokumentiert ist. Das Lesen der entsprechenden Dokumentation ist jedoch ein Muss: Die offizielle Dokumentation zur Zeitzone von MySQL 5.5 - und vergessen Sie nicht, die Zeitzonendaten einfach so auf Ihren Server zu laden (als Root-Benutzer ausführen!):
Trick Nummer eins - es muss genau unter MySQL-Root-Benutzer gemacht werden. Es kann fehlschlagen oder zu einem nicht funktionierenden Ergebnis führen, selbst wenn der Benutzer vollen Zugriff auf eine MySQL-Datenbank hat - ich habe den Fehler selbst gesehen.
quelle
Wenn Sie PDO verwenden:
Wenn Sie MySQLi verwenden:
Weitere Informationen zum Formatieren des Offsets finden Sie hier: https://www.sitepoint.com/synchronize-php-mysql-timezone-configuration/
quelle
Dies ist eine 10 Jahre alte Frage, aber hier ist, was für mich funktioniert hat. Ich verwende MySQL 8.0 mit Hibernate 5 und SpringBoot 4.
Ich habe die oben akzeptierte Antwort ausprobiert, aber bei mir nicht funktioniert. Was bei mir funktioniert hat, ist Folgendes:
Wenn dies hilft, vergessen Sie nicht, es zu verbessern: D.
quelle
Alte Frage mit einem weiteren Vorschlag:
Wenn Sie kürzlich die Zeitzone des Betriebssystems geändert haben, z.
... MySQL (oder MariaDB) wird es nicht bemerken, bis Sie den Datenbankdienst neu starten:
(oder)
quelle
Wenn Sie die MySql Workbench verwenden , können Sie dies festlegen, indem Sie die Administratoransicht öffnen und die Registerkarte Erweitert auswählen. Der obere Abschnitt ist "Lokalisierung" und das erste Kontrollkästchen sollte "Standardzeitzone" sein. Aktivieren Sie dieses Kontrollkästchen und geben Sie dann die gewünschte Zeitzone ein, starten Sie den Server neu und Sie sollten bereit sein.
quelle
Um herauszufinden, was die Zeitzone ist, können Sie zuerst abfragen
Ihre Ausgabe sollte wie folgt aussehen
Wenn Sie dann bestätigen möchten, dass Sie sich in einer Zeitzone wie CDT anstelle von EST befinden, können Sie überprüfen, zu welcher Zeit sich Ihre Maschine befindet
Wenn dies nicht die Zeit ist, die Sie möchten, müssen Sie sie ändern ... alles, was Sie tun müssen, ist
SET time_zone = timezone_name
. Stellen Sie sicher, dass es sich um einContinent/City
Format handelt.Wenn Sie sich auf einem gemeinsam genutzten Server befinden, weil Sie einen Hosting-Dienst haben, lesen Sie bitte diese Antworten zum Ändern der Datei php.ini oder der Datei .htaccess.
quelle
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p E
zuerst versucht und dann gutSET time_zone = timezone_name
funktioniert.Sie müssen die Zeitzone Ihres Standorts einrichten.
Gehen Sie also wie folgt vor: Öffnen Sie Ihre MSQLWorkbench und schreiben Sie einen einfachen SQL-Befehl wie diesen.
Und auch Ihre URL könnte so sein;
quelle
Um die Standard - Zeitzone setzen MariaDB müssen Sie gehen auf die 50-server.cnf Datei.
Dann können Sie den folgenden Eintrag in den Abschnitt mysqld eingeben.
Beispiel:
Die Änderung muss über die Konfigurationsdatei vorgenommen werden, sonst setzt der MariaDB-Server die MySQL-Tabellen nach einem Neustart zurück!
quelle
Bearbeiten Sie die MySQL-Konfigurationsdatei
Scrollen Sie und fügen Sie diese unten hinzu. Wechseln Sie in die entsprechende Zeitzone
Starten Sie den Server neu
quelle
Unter Windows (IIS) müssen zuerst die MySQL-Zeitzonenbeschreibungstabellen ausgefüllt werden, damit GLOBAL time_zone = 'Europe / Helsinki' (oder was auch immer) gesetzt werden kann.
Ich habe diese von diesem Link heruntergeladen https://dev.mysql.com/downloads/timezones.html
Nachdem ich die heruntergeladene SQL-Abfrage ausgeführt hatte, konnte ich die GLOBAL time_zone festlegen und das Problem beheben, bei dem SELECT NOW (); gab eher GMT als BST zurück.
quelle
In meinem Fall bestand die Lösung darin, den Parameter serverTimezone in den erweiterten Einstellungen auf einen geeigneten Wert (MEZ für meine Zeitzone) zu setzen.
Wenn ich IntelliJ verwende, verwende ich das Datenbankmodul. Beim Hinzufügen einer neuen Verbindung zur Datenbank und nach dem Hinzufügen aller relevanten Parameter auf der Registerkarte Allgemein ist ein Fehler auf der Schaltfläche "Verbindung testen" aufgetreten. Die Lösung besteht wiederum darin, den Parameter serverTimezone auf der Registerkarte Erweitert festzulegen.
quelle
Wenn jemand GoDaddy Shared Hosting verwendet, können Sie versuchen, die folgende Lösung zu finden, die für mich funktioniert hat.
Setzen Sie beim Starten der DB-Verbindung den Befehl time_zone in meinem PDO-Objekt, z.
Wobei "+05: 30" die TimeZone von Indien ist. Sie können es nach Bedarf ändern.
Nachdem; Alle MySQL-Prozesse in Bezug auf Datum und Uhrzeit werden mit der erforderlichen Zeitzone festgelegt.
Quelle: https://in.godaddy.com/community/cPanel-Hosting/How-to-change-TimeZone-for-MySqL/td-p/31861
quelle