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

Zwei Implementierungscodes der programmgesteuerten Navigation mit Vue-Router

Zwei Möglichkeiten zum Navigieren auf der Seite D...

Grafisches Installationstutorial für MySQL 8.0.17

In diesem Artikel finden Sie das grafische Tutori...

MySQL 8.X Installations-Tutorial unter Windows

Zuvor habe ich MySQL 5.7 verwendet, aber da MySQL...

Prometheus überwacht MySQL mithilfe der Grafana-Anzeige

Inhaltsverzeichnis Prometheus überwacht MySQL übe...

Implementierung des Wasserfall-Layouts im Uni-App-Projekt

GitHub-Adresse, Sie können es mit einem Stern mar...

Analyse von MySQL-Latenzproblemen und Datenlöschungsstrategieprozess

Inhaltsverzeichnis 1. MySQL-Replikationsprozess 2...

So installieren Sie JDK und Mysql auf dem Linux-System Ubuntu 18.04

Plattformbereitstellung 1. JDK installieren Schri...

So passen Sie einen EventEmitter in node.js an

Inhaltsverzeichnis Vorwort 1. Was ist 2. So verwe...

Zusammenfassung der in MySQL häufig verwendeten Verkettungsanweisungen

Vorwort: In MySQL wird die Funktion CONCAT() verw...

Installationsmethode für mysql-8.0.17-winx64 unter Windows 10

1. Von der offiziellen Website herunterladen und ...

Lösung für den MySQL-Root-Passwortfehler Nummer 1045

MySQL-Dienst stoppen Klicken Sie in Windows mit d...

Tutorial zur Installation von MySQL8 unter Linux CentOS7

1. Installation der RPM-Version Überprüfen Sie, o...

So verbergen Sie die Versionsnummer und die Cache-Zeit von Webseiten in Nginx

Nginx-Optimierung --- Versionsnummer und Cache-Ze...