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

Reines CSS, um coole Neonlichteffekte zu erzielen (mit Demo)

Ich habe kürzlich die Tutorial-Reihe zu CSS-Anima...

Beispiel für die Verwendung der in Vue integrierten Komponente „Keep-Alive“

Inhaltsverzeichnis 1. Verwendung von Keep-Alive A...

Zusammenfassung mehrerer APIs oder Tipps in HTML5, die Sie nicht verpassen sollten

In früheren Blogbeiträgen habe ich mich auf einige...

Zusammenfassung einiger Tipps zum Umgehen der Node.js-Codeausführung

Inhaltsverzeichnis 1. untergeordneter Prozess 2. ...

Über 40 schöne Beispiele für Webformular-Designs

Webformulare sind der primäre Kommunikationskanal...

Detaillierte Erklärung der Kartenüberlagerung in OpenLayers6

1. Overlay-Übersicht Overlay bedeutet Überlagerun...

Detaillierte Erklärung des EXPLAIN-Befehls und seiner Verwendung in MySQL

1. Szenariobeschreibung: Mein Kollege hat mir gez...

Detaillierte Erklärung des FreeList-Mechanismus von MySQL

1. Einleitung Nach dem Start von MySQL wird Buffe...

So stellen Sie Go-Webanwendungen mit Docker bereit

Inhaltsverzeichnis Warum brauchen wir Docker? Bei...