MySQL-Zeittypauswahl

MySQL-Zeittypauswahl

MySQL bietet für die Verarbeitung von Datum und Uhrzeit zwei sehr ähnliche Typen, DATETIME und TIMESTAMP. In den meisten Fällen sind beide in Ordnung, in manchen Fällen hat jedoch jeder seine eigenen Vor- und Nachteile.

DATETIME

DATETIME hat einen größeren Zeitraum von 1001 bis 9999 mit einer Genauigkeit von Sekunden. Das Speicherformat besteht darin, Datum und Uhrzeit zu packen und als Ganzzahl im Format JJJJMMTThhmmss zu speichern. Diese Zeit ist unabhängig von der Zeitzone und belegt 8 Byte Speicherplatz. Standardmäßig zeigt MySQL DATETIME in einem geordneten, eindeutigen Format an, beispielsweise 2021-06-02 18:35:23. Dies ist das ANSI-Standardformat für Datum und Uhrzeit.

ZEITSTEMPEL

TIMESTAMP ist ein Zeitstempel, der die Anzahl der Sekunden seit Mitternacht Greenwich Mean Time (GMT) am 1. Januar 1970 speichert. Entspricht dem Zeitstempel auf Unix-Systemen. TIMESTAMP benötigt zum Speichern nur 4 Bytes und kann daher einen kleineren Zeitraum von 1970 bis 2038 darstellen. MySQL stellt die Funktionen FROM_UNIXTIME und UNIX_TIMESTAMP bereit, um die Konvertierung zwischen Zeitstempeln und Daten durchzuführen.

Ab MySQL Version 4.1 ähnelt das von TIMESTAMP angezeigte Format DATETIME, die Anzeige von TIMESTAMP hängt jedoch von der Zeitzone ab. Der MySQL-Server, das Betriebssystem und die Clientverbindung verfügen alle über Zeitzoneneinstellungen. Wenn Zeiten aus mehreren Zeitzonen gespeichert werden, kann der Unterschied zwischen TIMESTAMP und DATETIME daher erheblich sein. TIMESTAMP behält bei Verwendung die Zeitzoneninformationen bei, während DATETIME lediglich Text zur Darstellung der Zeit verwendet.

TIMESTAMP hat zusätzliche Funktionen. Standardmäßig verwendet MySQL die aktuelle Zeit zum Einfügen in die Spalte TIMESTAMP, wenn kein Wert angegeben ist, und verwendet die aktuelle Zeit zum Aktualisieren des Felds, wenn während der Aktualisierung kein Wert angegeben ist. Nehmen Sie die folgende Testtabelle als Beispiel:

Tabelle erstellen t_time_test (
    ID INT Primärschlüssel,
    t_stamp ZEITSTEMPEL,
    t_datetime DATETIME
);

Sie können sehen, dass der von MySQL vorgegebene Standardwert der aktuelle Zeitstempel CURRENT_TIMESTAMP ist und dass ein ON UPDATE CURRENT_TIMESTAMP vorhanden ist, um anzuzeigen, dass er entsprechend aktualisiert wird:

INSERT INTO t_time_test(id, t_datetime) WERTE
	(1, NULL), 
	(2, '2021-06-02 18:48:04'), 
	(3, NULL);

Sie können sehen, dass die Spalte t_stamp automatisch mit der aktuellen Zeit gefüllt wird.

Mit dieser Funktion können wir das Feld für die Datenaktualisierungszeit über das IoT-Programm verwalten und es von MySQL vervollständigen lassen.

Wie man wählt

Aus Sicht der Eigenschaften ist TIMESTAMP möglicherweise für die Zeitspeicherung vorzuziehen, da es effizienter ist als DATETIME. Manche Leute verwenden Ganzzahlen zum Speichern von Unix-Zeitstempeln, aber dieser Ansatz bietet keinerlei Vorteile und Ganzzahlen erfordern zusätzliche Verarbeitung, weshalb er nicht empfohlen wird. Es gibt jedoch einige Situationen, in denen Sie TIMESTAMP nicht zum Speichern von Zeiten verwenden sollten:

  • Geburtstag: Geburtstage liegen definitiv vor 1970, was außerhalb des Bereichs von TIMESTAMP liegt
  • Ablaufdatum der Gültigkeit: Die maximale Zeit von TIMESTAMP beträgt 2038. Es ist nicht geeignet, das Ablaufdatum der Gültigkeit von Personalausweisen, Gewerbescheinen usw. zu speichern.
  • Überlebensdauer eines Unternehmens: Im Internetzeitalter ist Geschwindigkeit wichtig und Unternehmen entwickeln (und sterben) schnell. Wenn Ihr Unternehmen dauerhaft bestehen soll, wird es höchstwahrscheinlich auch im Jahr 2038 noch bestehen. Schließlich schreiben wir bereits das Jahr 2021. Wenn Sie glauben, dass Ihr Unternehmen nicht bis 2038 überleben wird, ist das in Ordnung. Wenn Sie das Glück haben, das Jahr 2038 zu erleben, sollten Sie sich unbedingt eine Aufgabe notieren: Ändern Sie den Zeitstempelfeldtyp der Datentabelle vor dem 1. Januar 2038.

So speichern Sie Millisekundenzeit

Normalerweise müssen Sie BIGINT verwenden, um die Zeit zur Speicherung in eine Ganzzahl umzuwandeln, oder eine Gleitkommazahl verwenden und den Dezimalteil nutzen, um die Zeit mit einer Genauigkeit von weniger als einer Sekunde darzustellen. Beide Methoden sind möglich. Natürlich ist für die Formatkonvertierung zu diesem Zeitpunkt Anwendungsunterstützung erforderlich.

Abschluss

Aus Sicherheitsgründen wird empfohlen, dem Typ DATETIME den Vorzug zu geben. Obwohl die Leistung im Vergleich zu TIMESTAMP etwas beeinträchtigt wird, ist der Zeitbereich von TIMESTAMP ein Fehler. Lassen Sie keine versteckte Gefahr. Wenn das Jahr 2038 kommt, ist Ihr Unternehmen möglicherweise börsennotiert und Programmierer stoßen möglicherweise auf eine Flut von Fehlern, ohne zu wissen, warum, was zu einem plötzlichen Absturz des Aktienkurses des Unternehmens führen kann! Dann finden Sie heraus, welcher Programmierer früher eine hohe Nummer im Unternehmen war, heute Aktionär ist und Sie als solcher finanzielle Freiheit erlangt haben! Finden Sie das nicht peinlich?

Oben sind die Details zur Auswahl des MySQL-Zeittyps aufgeführt. Weitere Informationen zum MySQL-Zeittyp finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So wählen Sie den richtigen MySQL-Datums-/Uhrzeittyp zum Speichern Ihrer Zeit
  • Erläuterung des Problems bei der Auswahl des MySQL-Speicherzeittyps
  • Informationen zur Auswahl des MySQL-Zeittyps
  • Analysieren von MySql- und Java-Zeittypen
  • Zusammenfassung der Verwendung des MySQL-Datumsdatentyps und des Zeittyps
  • Details zu MySQL-Zeittypen und -Modi

<<:  Die vernachlässigten Spezialeffekte von META-Tags (Seitenübergangseffekte)

>>:  Detaillierte Erläuterung der häufig verwendeten Filter von Tomcat

Artikel empfehlen

So fügen Sie Videos in HTML ein und machen sie mit allen Browsern kompatibel

Zum Einfügen von Videos in HTML werden am häufigst...

Installieren und konfigurieren Sie MySQL 5.7 unter CentOS 7

Dieser Artikel testet die Umgebung: CentOS 7 64-B...

Konvertieren von XHTML-CSS-Seiten in Druckerseiten

In der Vergangenheit bedeutete das Erstellen eine...

Docker verpackt das lokale Image und stellt es auf anderen Maschinen wieder her

1. Verwenden Sie Docker-Images, um alle Image-Dat...

jQuery-Plugin zur Implementierung des Minesweeper-Spiels (1)

Dieser Artikel teilt den spezifischen Code des er...

Einführung in verschiedene Möglichkeiten zur Einführung von CSS in HTML

Inhaltsverzeichnis 1. CSS-Stile direkt in HTML-Ta...

Zusammenfassung der Methoden zur Änderung des Git-Commit-Protokolls

Fall 1: Letzte Übermittlung und kein Push Führen ...

JavaScript Canvas zeichnet dynamische Drahtgittereffekte

In diesem Artikel wird der spezifische Code des d...

Überlegungen zum Rasterdesign von Webseiten

<br />Ursprüngliche Adresse: http://andymao....

MySQL-unabhängiger Index und gemeinsame Indexauswahl

Häufig fehlt das Verständnis für mehrspaltige Ind...