Lösen Sie das Problem der inkonsistenten MySQL-Speicherzeit

Lösen Sie das Problem der inkonsistenten MySQL-Speicherzeit

Nachdem die Systemzeit mit Java ermittelt und in der MySQL-Datenbank gespeichert wurde, stellt sich heraus, dass die Datenbankspeicherung nicht mit der Ortszeit übereinstimmt, wenn der Zeittyp „Datum/Uhrzeit“ oder „Zeitstempel“ ist.

Ein wichtiger Grund ist, dass die für MySQL eingestellte Zeitzone nicht mit Ihrer lokalen Zeitzone übereinstimmt. Die Lösung besteht darin, die MySQL-Zeitzonenkonfiguration zu ändern. Sie finden dies, indem Sie online suchen.

Ich empfehle die zweite Methode

Legen Sie es einfach in der DBUtil-Klasse fest, die entsprechend den tatsächlichen Anforderungen Ihres Projekts eine Verbindung zur Datenbank herstellt. Beispielsweise habe ich im folgenden Code die Zeitzone auf die gleiche Zeitzone wie Shanghai, Asien geändert.

privater statischer String-Treiber = "com.mysql.cj.jdbc.Driver";
    private statische String-URL = "jdbc:mysql://127.0.0.1:3306/mypetstore?serverTimezone=Asia/Shanghai&useSSL=false";

Zum Einstellen der Zeitzone wird serverTimezone=Asia/Shanghai verwendet.

Beim Abrufen von Timestamp-Daten aus MySQL und der Anzeige im Browser kommt am Ende immer eine .0, was sehr ärgerlich ist. Was kann ich tun?

Sie können den folgenden EL-Ausdruck und die JSTL-Tags zur Formatierung verwenden, wobei log.date die Zeitdaten sind, die gefunden wurden

<fmt:formatDate Wert="${log.date}" Typ="Datum" Muster="jjjj-MM-tt HH:mm:ss" />

Hinweis: Wenn Sie es als yyyy-MM-dd hh:mm:ss schreiben, wird nicht zwischen Vormittag und Nachmittag unterschieden

Ergänzung: Problem mit falscher Mysql-Speicherzeit oder -Datumsausrichtung

Hier wird das Problem diskutiert, dass beim Hinzufügen von Datensätzen zur MySQL-Datenbank das Datum um einen Tag verschoben wird oder die Uhrzeit falsch ist.

Problem-Szenarien

Es gibt kein Problem mit der Codelogik. Bei der schrittweisen Ausführung habe ich festgestellt, dass das Datum beim Speichern korrekt war, beim Speichern in der Datenbank jedoch falsch.

Grund

Der Grund liegt in dem Problem mit den Parametern, die Sie beim Konfigurieren der Datenquellenverbindung hinzugefügt haben. Wenn ich richtig vermute, sollte der von Ihnen konfigurierte Parameter serverTimezone UTC sein. Dies liegt daran, dass die falsche Zeitzone verwendet wird, was dazu führt, dass das Datum beim Speichern von Daten falsch platziert wird.

Bildbeschreibung hier einfügen

Lösung

Stellen Sie die Server-Zeitzone wie unten gezeigt auf Asien/Shanghai ein. Versuchen Sie es erneut und das Problem wird gelöst.

Bildbeschreibung hier einfügen

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Analysieren Sie das Auswahlproblem beim Speichern von Zeit- und Datumstypen in MySQL
  • Erläuterung des Problems bei der Auswahl des MySQL-Speicherzeittyps
  • So wählen Sie den richtigen MySQL-Datums-/Uhrzeittyp zum Speichern Ihrer Zeit
  • MySQL-Anweisung zum Abrufen aller Daten oder Monate in einem angegebenen Zeitraum (ohne Festlegen gespeicherter Prozeduren oder Hinzufügen von Tabellen)
  • Best Practices-Handbuch zum Speichern von Daten in MySQL

<<:  Webdesigner sollten Webseiten unter drei Aspekten optimieren

>>:  Analyse der Prinzipien von Docker-Containern

Artikel empfehlen

Implementierungsschritte zum Installieren einer Java-Umgebung in Docker

Dieser Artikel basiert auf Linux CentOS8, um Dock...

Natives JS zur Implementierung eines atmenden Karussells

Heute zeige ich Ihnen ein mit nativem JS implemen...

XHTML 1.0-Referenz

Nach Funktion sortierenNN: Gibt an, welche frühere...

VMware Workstation Pro installiert das Win10-Betriebssystem in Reinform

Dieser Artikel beschreibt die Schritte zur Instal...

Detaillierte Erläuterung verschiedener Speichermethoden von Docker-Containern

Inhaltsverzeichnis Vorne geschrieben Mehrere Spei...

Lösung für das Docker-Pull-Timeout

In letzter Zeit ist das Abrufen von Docker-Images...

So isolieren Sie Benutzer in Docker-Containern

Im vorherigen Artikel „UID und GID in Docker-Cont...

Kennen Sie den Unterschied zwischen leerem Wert und Nullwert in MySQL

Vorwort Kürzlich habe ich festgestellt, dass die ...

Detaillierte Beschreibung der HTML-Tabellenrahmensteuerung

Nur den oberen Rand anzeigen <table frame=above...

CSS zum Erzielen eines Chat-Blaseneffekts

1. Rendern JD-Effekt Simulationseffekt 2. Grundsa...

HTML+CSS+JS zur Implementierung des Spiels „Nicht auf das Whiteboard treten“

Inhaltsverzeichnis Hintergrund 1. Gedankenanalyse...