Eine kurze Analyse des Zeitproblems von MySQL

Eine kurze Analyse des Zeitproblems von MySQL

Der Standardzeittyp (Datum/Uhrzeit und Zeitstempel) in MySQL hat eine Genauigkeit von Sekunden. Wenn der Zeitwert mit einer Genauigkeit von weniger als einer Sekunde festgelegt wird, wird er gerundet, was dazu führen kann, dass der Wert in der Datenbank eine Sekunde länger ist als der ursprüngliche Wert. Mit anderen Worten: Datensätze, die ursprünglich auf heute beschränkt waren, können morgen bereits aufgezeichnet werden.

Unten sehen Sie ein Beispiel, das die Rundung der Zeit veranschaulicht. Erstellen Sie zunächst eine Tabelle:

Tabelle erstellen Testzeit (
 Zeit_Sek. Datum/Uhrzeit,
 time_millis Datum/Uhrzeit(3),
 time_micros Datum/Uhrzeit(6),
 stamp_sec Zeitstempel,
 stamp_millis Zeitstempel(3),
 stamp_micros Zeitstempel(6)
);

Einige Leser wissen möglicherweise nicht, dass Datum und Uhrzeit sowie der Zeitstempel präzise definiert werden können. Der Präzisionswert liegt zwischen 0 und 6 und gibt an, wie viele Dezimalstellen beibehalten werden. Der Standardwert ist 0. Offensichtlich kann das Beibehalten von 3 Ziffern als Millisekundengenauigkeit und das Beibehalten von 6 Ziffern als Mikrosekundengenauigkeit angesehen werden.

Dann fügen wir einen Datensatz ein:

INSERT INTO test_time
(Zeit_Sek., Zeit_Millis, Zeit_Mikros, 
 Stempel_Sek., Stempel_Millis, Stempel_Mikros)
WERTE(
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654', 
 30.11.2019 12:34:56.987654
);

Führen Sie dann eine weitere select * from test_time -Abfrage aus und Sie werden die folgenden Ergebnisse sehen:

Zeit_Sek. |Zeit_Millis |Zeit_Mikros |Stempel_Sek. |Stempel_Millis |Stempel_Mikros |
---------------------|----------------------|--------------------------|-----------------------|--------------------------|
2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|

Sie können sehen, dass die Sekundenwerte von time_sec und stamp_sec in der Datenbank aufgerundet sind und die Millisekundenwerte von time_millis und stamp_millis aufgerundet sind.

Es ist ersichtlich, dass es zwei Möglichkeiten gibt, solche Fehler zu vermeiden:

  • Verwenden Sie datetime(6) oder timestamp(6), wenn Sie Felder definieren.
  • Das Feld ist ohne Genauigkeit definiert, aber der Millisekundenwert wird abgeschnitten, bevor die Zeit in der Datenbank gespeichert wird.

Zugehörige Dokumente:

MySQL 5.6-Referenz: Sekundenbruchteile in Zeitwerten

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Zusammenfassung der Verwendung des MySQL-Datumsdatentyps und des Zeittyps
  • Detaillierte Erklärung der TIMESTAMP-Verwendung in MySQL
  • MySql-Abfragezeitraummethode
  • Implementierungsanweisung für die Konvertierung des MySQL-Datums- und Zeitformats
  • MySQL-Funktion zur Berechnung der Zeitdifferenz
  • FROM_UNIXTIME Format MySQL-Zeitstempelfunktion
  • MySQL Datum Uhrzeit DATE_FORMAT (Datum, Format)
  • Funktionen und Methoden zum Konvertieren von Datums- und Zeitstempeln in MySQL
  • So schreiben Sie verschiedene SQL-Anweisungen in MySQL, um Zeitdaten für einen Tag, eine Woche und einen Monat zu erhalten
  • Automatische Aktualisierungszeit für MySQL-Zeitstempel

<<:  Beispiel für die Implementierung des zugrunde liegenden Codes zur Simulation responsiver Prinzipien durch Vue

>>:  So beheben Sie den Startfehler des Docker-Containers

Artikel empfehlen

Vue + Express + Socket realisiert Chat-Funktion

In diesem Artikel wird der spezifische Code von V...

Vollbild-Drag-Upload-Komponente basierend auf Vue3

In diesem Artikel wird hauptsächlich die Vollbild...

js und jquery, um einen Tab-Statusleisten-Umschalteffekt zu erzielen

Heute werden wir einen einfachen Fall durchgehen ...

So konfigurieren Sie Anti-Hotlinking für den Nginx-Websitedienst (empfohlen)

1. Prinzip des Hotlinking 1.1 Vorbereitung der We...

JavaScript Canvas realisiert den Effekt des Neun-Quadrat-Rasterschneidens

In diesem Artikel wird der spezifische Code der L...

Detailliertes Tutorial zum Herunterladen und Installieren von VMware Workstation

Virtuelle Maschinen sind eine sehr praktische Tes...

Detaillierte Erläuterung der TCPdump-Befehlsbeispiele in Linux

Vorwort Einfach ausgedrückt ist tcpdump ein Paket...

Native js implementiert Warenkorb-Logik und -Funktionen

In diesem Artikelbeispiel wird der spezifische Co...

Vue verwendet MockJS, um simulierte Datenfalldetails zu generieren

Inhaltsverzeichnis Installieren Sie Mockjs in Ihr...

Vue3.0 verwendet das Plug-In vue-grid-layout, um Drag-Layout zu implementieren

Inhaltsverzeichnis 1. Plugins 2. Zwischenspiel 3....

Grafisches Tutorial zur Offline-Installation und Konfiguration von MySQL 8.0.2

Die Offline-Installationsmethode von MySQL_8.0.2 ...