Wie wird die aktuelle Uhrzeit in MySQL dargestellt?Tatsächlich gibt es viele Möglichkeiten, dies auszudrücken, die wie folgt zusammengefasst werden können:
Sowohl der Datums- als auch der Zeitstempeltyp werden verwendet, um Daten im Format JJJJ-MM-TT HH:MM:SS darzustellen, es gibt jedoch einige Unterschiede zwischen den beiden. abschließend
verifizierenUmgebungsvorbereitung, kurz gesagt, es gibt eine Tabelle mit Zeitstempelfeld und Datums-/Uhrzeitfeld, und der aktuelle Server befindet sich in der CST-Zeitzone mysql> show create table test_time\G; *************************** 1. Reihe *************************** Tabelle: test_time Tabelle erstellen: CREATE TABLE `test_time` ( `id` int NICHT NULL AUTO_INCREMENT, `ts` Zeitstempel(6) NULL DEFAULT CURRENT_TIMESTAMP(6) BEI UPDATE CURRENT_TIMESTAMP(6), `dt` datetime(6) DEFAULT CURRENT_TIMESTAMP(6) BEI UPDATE CURRENT_TIMESTAMP(6), PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 Zeile im Satz (0,00 Sek.) mysql> Variablen wie „%time_zone%“ anzeigen; +------------------+--------+ | Variablenname | Wert | +------------------+--------+ | Systemzeitzone | CST | | Zeitzone | SYSTEM | +------------------+--------+ 2 Zeilen im Satz (0,01 Sek.) Fügen Sie ein Datenelement ein. Die Ergebnisse von ts und dt sind in der aktuellen CST-Zeitzone gleich. mysql> wähle * aus Testzeit; Leerer Satz (0,00 Sek.) mysql> in test_time() Werte einfügen(); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> wähle * aus Testzeit; +----+----------------------------+----------------------------+ | id | ts | dt | +----+----------------------------+----------------------------+ | 3 | 05.12.2021 15:04:13.293949 | 05.12.2021 15:04:13.293949 | +----+----------------------------+----------------------------+ 1 Zeile im Satz (0,00 Sek.) Stellen Sie die Zeitzone der Sitzung auf UTC ein und führen Sie die Abfrage erneut durch. Das Ergebnis der ts-Abfrage ist 8 Stunden langsamer als zuvor, da die Zeitzone von CST auf UTC geändert wird. Da dt keine Zeitzoneninformationen überträgt, bleibt das Ergebnis unverändert. mysql> setze Zeitzone='+00:00'; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> wähle * aus Testzeit; +----+----------------------------+----------------------------+ | id | ts | dt | +----+----------------------------+----------------------------+ | 3 | 05.12.2021 07:04:13.293949 | 05.12.2021 15:04:13.293949 | +----+----------------------------+----------------------------+ 1 Zeile im Satz (0,01 Sek.) Dies spiegelt sich auch im Binärprotokoll wider, das durch den Einfügevorgang generiert wird. ts wird im Binärprotokoll als Zeitstempel gespeichert (die Anzahl der Sekunden vom 01.01.1970 00:00:00 UTC bis heute), was den UTC-Zeitzoneninformationen entspricht. dt ist ohne die Zeitzoneninformationen. Das Ergebnis ist die formatierte Zeichenfolge 2021-12-05 15:04:13.293949. Konzentrieren Sie sich auf die vierte und fünfte Zeile von unten. @2=1638687853.293949 stellt den Wert des ts-Felds dar und @3='2021-12-05 15:04:13.293949' stellt den Wert des dt-Felds dar. [mysql %] mysqlbinlog -v --base64-output=Zeilen dekodieren ./mysqlbin.000012 ... ... SETZEN @@SESSION.GTID_NEXT= '1cf4493a-dafd-11eb-944c-4016af29c14c:1416767'/*!*/; # bei 14220 #211205 15:04:13 Server-ID 1 End-Log-Pos 14308 CRC32 0x1fd913a3 Abfrage Thread-ID = 137 Exec-Zeit = 0 Fehlercode = 0 ZEITSTEMPEL FESTLEGEN=1638687853.293949/*!*/; BEGINNEN /*!*/; # bei 14308 #211205 15:04:13 Server-ID 1 end_log_pos 14368 CRC32 0xbb8937fb Table_map: `testa`.`test_time` zugeordnet zur Nummer 121 # bei 14368 #211205 15:04:13 Server-ID 1 end_log_pos 14423 CRC32 0x2e0a3baa Write_rows: Tabellen-ID 121 Flags: STMT_END_F ### INSERT INTO `testa`.`test_time` ### SATZ ### @1=3 ### @2=1638687853.293949 ### @3='2021-12-05 15:04:13.293949' # bei 14423 #211205 15:04:13 Server-ID 1 end_log_pos 14454 CRC32 0x68cee280 Xid = 1416 BEGEHEN /*!*/; Grube
Damit ist dieser Artikel abgeschlossen, in dem die Fallstricke von DTS, die durch die Zeitzonenprobleme von Zeitstempel und Datum/Uhrzeit in MySQL verursacht werden, ausführlich erläutert werden. Weitere Informationen zu den Fallstricken von MySQL-Zeitstempel und Datum/Uhrzeit finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Die Bedeutung der 5 Leerzeichenarten in HTML
>>: So verhindern Sie, dass Benutzer Webseiteninhalte mit reinem CSS kopieren
Bei der täglichen Wartung werden Threads häufig b...
Einführung in die Sicherheitslücke Die SigRed-Sic...
Schauen wir uns zunächst einige einfache Daten an:...
In die CSS-Datei schreiben Code kopieren Der Code ...
Dieser Artikel enthält hauptsächlich Lösungen für...
Vorwort Bei der Entwicklung statischer Seiten, wi...
Die mobile Version der Website sollte zumindest ü...
filter werden im Allgemeinen verwendet, um bestim...
Redis-Einführung Redis ist vollständig Open Sourc...
Struktureller (Position) Pseudoklassenselektor (C...
Vor kurzem musste ich beim Entwickeln einer Websi...
In diesem Artikelbeispiel wird der spezifische Co...
Wenn ein Unternehmensentwickler eine Insert-Anwei...
Vorwort Unter dem Einfluss einiger CSS-Interaktio...
Installieren Sie TomCat unter Windows Dieser Arti...