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

Einige Hinweise zu MySQL-Routineberechtigungen

1. Wenn der Benutzer über die Berechtigung zum Er...

Entdecken Sie, wie Ihnen eine LED den Einstieg in den Linux-Kernel erleichtert

Inhaltsverzeichnis Vorwort LED-Trigger Entdecken ...

Beispielcode zur Installation von ElasticSearch und Kibana unter Docker

1. Einleitung Elasticsearch erfreut sich derzeit ...

Grafisches Beispiel für die Verwaltung von Datenträgerkontingenten unter Linux

Das Datenträgerkontingent ist die Speichergrenze ...

Vue implementiert die Funktion zum Aufrufen der Handykamera und des Albums

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

MySQL Order By-Codebeispiel für Sortierregeln für mehrere Felder

Sag es im Voraus Aus einer Laune heraus möchte ic...

Vue implementiert eine einfache Produktion von Zählern

In diesem Artikelbeispiel wird der einfache Imple...

CSS Transition erweitert und reduziert Elemente durch Ändern der Höhe

Ein allgemeines Entwicklungsbedürfnis besteht dar...

SSH-Portweiterleitung zur Erzielung einer Intranet-Penetration

Die Maschinen in unserem LAN können auf das exter...

So verwenden Sie Dayjs zum Berechnen gängiger Daten in Vue

Bei der Verwendung von Vue zur Entwicklung von Pr...

Implementierung der Vorschaufunktion mehrerer Bild-Uploads auf HTML-Basis

Ich habe vor kurzem ein Skript zum Hochladen mehr...