Der Unterschied zwischen Datenzeit und Zeitstempel in MySQL

Der Unterschied zwischen Datenzeit und Zeitstempel in MySQL

In MySQL gibt es drei Datumstypen:

Datum (Jahr-Monat-Tag)

Tabelle „Test (Einstellungsdatum)“ erstellen;

datetime (Datum/Uhrzeit-Typ)

Tabelle „Test“ erstellen (Einstellungsdatum, Datum/Uhrzeit)

Zeitstempel (Poststempeltyp, speichert Jahr-Monat-Tag Stunde-Minute-Sekunde)

Tabelle „Test“ erstellen (Zeitstempel des Einstellungsdatums)

Unterschiede zwischen Datum und Uhrzeit und Zeitstempel

1. Die Speichermethoden der beiden sind unterschiedlich

Für TIMESTAMP konvertiert es die vom Client eingegebene Zeit zur Speicherung von der aktuellen Zeitzone in UTC (Koordinierte Weltzeit). Bei der Abfrage wird diese in die aktuelle Zeitzone des Clients umgerechnet und zurückgegeben. Für DATETIME werden keine Änderungen vorgenommen und die Ein- und Ausgabe erfolgt grundsätzlich unverändert.

2. Der von beiden gespeicherte Zeitbereich ist unterschiedlich

Der Zeitbereich, den der Zeitstempel speichern kann, ist: „1970-01-01 00:00:01.000000“ bis „2038-01-19 03:14:07.999999“.

Der Zeitbereich, den datetime speichern kann, ist: „1000-01-01 00:00:00.000000“ bis „9999-12-31 23:59:59.999999“.

Zusammenfassung: TIMESTAMP und DATETIME unterscheiden sich außer in ihrem Speicherbereich und ihrer Speichermethode nicht wesentlich. Natürlich ist TIMESTAMP für Geschäfte über Zeitzonen hinweg besser geeignet.

3. Automatische Initialisierung und Aktualisierung

Automatische Initialisierung bedeutet, dass, wenn dem Feld (wie etwa dem Feld „hiredate“ im obigen Beispiel) keine explizite Zuweisung vorliegt, es automatisch auf die aktuelle Systemzeit gesetzt wird.

Automatische Aktualisierung bedeutet, dass bei Änderungen anderer Felder der Wert dieses Feldes automatisch auf die aktuelle Systemzeit aktualisiert wird.

Es hängt mit dem Parameter „explicit_defaults_for_timestamp“ zusammen.

Standardmäßig ist der Wert dieses Parameters OFF

mysql> Variablen wie „%explicit_defaults_for_timestamp%“ anzeigen;
+---------------------------------+--------+
| Variablenname | Wert |
+---------------------------------+--------+
| explizite_Vorgaben_für_Zeitstempel | AUS |
+---------------------------------+--------+
Zeile im Satz (0,00 Sek.)

Zusammenfassung: Der Zeitstempel wird automatisch initialisiert und aktualisiert. Wenn Sie einen Datensatz aktualisieren, wird der Spaltenwert automatisch aktualisiert. Dies ist der größte Unterschied zu Datatime.

Ergänzung: Einige Unterschiede und Probleme zwischen DATETIME und TIMESTAMP

Ich bin heute auf ein Problem gestoßen. Obwohl die Daten aktualisiert wurden, blieb das Feld update_time immer noch auf dem Stand, als die Daten erstellt wurden.

Normalerweise sollte dieses Feld automatisch aktualisiert werden.

Habe die Tabellenstruktur geprüft.

`update_time` datetime NICHT NULL STANDARD CURRENT_TIMESTAMP

Es wurde festgestellt, dass der Typ des Felds update_time datetime ist

Dies wirft zwei Fragen auf: (1) den Unterschied zwischen Zeitstempel und Datum/Uhrzeit; (2) warum CURRENT_TIMESTAMP für Datum/Uhrzeit-Typen verwendet werden kann

Der Unterschied zwischen Zeitstempel und Datum/Uhrzeit

a) Der Standardwert von DATETIME ist null; der Standardwert des Felds TIMESTAMP ist nicht null (nicht null) und der Standardwert ist die aktuelle Zeit (CURRENT_TIMESTAMP). Wenn keine spezielle Verarbeitung erfolgt und der Aktualisierungswert der Spalte nicht in der Aktualisierungsanweisung angegeben ist, ist die aktuelle Zeit der Standardaktualisierungswert.

Dieser Unterschied erklärt, warum wir die automatische Aktualisierung dieses Felds normalerweise nicht verwalten müssen, da wir meistens einen Zeitstempel verwenden. Hier verwenden wir Datum und Uhrzeit, und es gibt keinen Mechanismus zur automatischen Aktualisierung der aktuellen Uhrzeit. Daher müssen wir dieses Feld in der oberen Ebene manuell aktualisieren.

b) DATETIME benötigt 8 Byte Speicherplatz und TIMESTAMP benötigt 4 Byte Speicherplatz. Daher ist TIMESTAMP platzsparender als DATETIME.

Dieser Unterschied erklärt, warum der Zeitstempeltyp häufiger verwendet wird.

c) Die Speichermethoden der beiden sind unterschiedlich. Für TIMESTAMP konvertiert es die vom Client eingegebene Zeit zur Speicherung von der aktuellen Zeitzone in UTC (Coordinated Universal Time). Bei der Abfrage wird diese in die aktuelle Zeitzone des Clients umgerechnet und zurückgegeben. Für DATETIME werden keine Änderungen vorgenommen und die Ein- und Ausgabe erfolgt grundsätzlich unverändert.

d) Der speicherbare Zeitbereich ist unterschiedlich

Der Zeitbereich, den der Zeitstempel speichern kann, ist: „1970-01-01 00:00:01.000000“ bis „2038-01-19 03:14:07.999999“;

Der Zeitbereich, den datetime speichern kann, ist: „1000-01-01 00:00:00.000000“ bis „9999-12-31 23:59:59.999999“.

Warum kann CURRENT_TIMESTAMP für Datums-/Uhrzeittypen verwendet werden?

In Versionen vor MySQL 5.6 kann CURRENT_TIMESTAMP nur für Zeitstempeltypen verwendet werden.

Ab Version 5.6 kann CURRENT_TIMESTAMP auch für Datetime-Typen verwendet werden

Ich habe die Datenbank mit select version() überprüft und festgestellt, dass die Version 5.6.29 ist

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der TIMESTAMP-Verwendung in MySQL
  • Verwendung der MySQL-Zeitdifferenzfunktionen TIMESTAMPDIFF und DATEDIFF
  • MySQL-Datentyp TIMESTAMP

<<:  Absatzlayout und Zeilenumbrüche in HTML-Webseiten

>>:  Warum Nginx besser ist als Apache

Artikel empfehlen

Java importiert Daten aus Excel in MySQL

Manchmal müssen wir bei unserer tatsächlichen Arb...

So betten Sie Dateien im Flash-Videoformat (FLV, SWF) in HTML-Dateien ein

Flash-Dateiformate: .FLV und .SWF Für das Flash-Vi...

Vue + Express + Socket realisiert Chat-Funktion

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

So implementieren Sie mehrere Parameter in el-dropdown in ElementUI

Aufgrund der zunehmenden Anzahl von Schaltflächen...

WePY-Cloud-Entwicklungspraxis im Linux-Befehlsabfrage-Applet

Hallo zusammen, heute werde ich mit Ihnen die WeP...

Tabelle td Bild horizontal und vertikal zentriert Code

HTML Code: Code kopieren Der Code lautet wie folgt...

CSS verwendet radialen Farbverlauf zur Implementierung von Coupon-Stilen

In diesem Artikel erfahren Sie, wie Sie mithilfe ...

Analyse des Prinzips und der Verwendung der kontinuierlichen MySQL-Aggregation

Dieser Artikel veranschaulicht anhand von Beispie...