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

Kurze Einführung und Verwendung von Table und div

Web-Frontend 1 Studierendenausweis Name Geschlech...

Ein magischer MySQL-Deadlock-Troubleshooting-Datensatz

Hintergrund Apropos MySQL-Deadlock: Ich habe bere...

Diagramm des Datenübertragungsprozesses beim dritten TCP-Handshake

Die Prozesspakete mit dem SYN-Flag im RFC793-Doku...

Über 3 gängige Pakete der REM-Anpassung

Vorwort Ich habe bereits einen Artikel über REM-A...

Details zum Überschreiben von Prototypmethoden in JavaScript-Instanzobjekten

Inhaltsverzeichnis In JavaScript können wir norma...

Erfahren Sie mehr über die MySQL-Speicher-Engine

Inhaltsverzeichnis Vorwort 1. MySQL-Hauptspeicher...

So stellen Sie Docker-Containerdaten wieder her

Die Datenbankdaten der Projekttestumgebung sind v...

JavaScript implementiert das Klassenlotterie-Applet

In diesem Artikel wird der spezifische JavaScript...

Grafisches Tutorial zur Installation von MySQL 5.7.19 (tar.gz) unter Linux

Das erste Tutorial zur Installation der MySQL-5.7...

Drei BOM-Objekte in JavaScript

Inhaltsverzeichnis 1. Standortobjekt 1. URL 2. Ei...