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 Zeitstempel1. Die Speichermethoden der beiden sind unterschiedlichFü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 unterschiedlichDer 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 AktualisierungAutomatische 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/Uhrzeita) 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:
|
<<: Absatzlayout und Zeilenumbrüche in HTML-Webseiten
>>: Warum Nginx besser ist als Apache
Manchmal müssen wir bei unserer tatsächlichen Arb...
Vorwort Beim Anlegen der Primär- und Fremdschlüss...
Flash-Dateiformate: .FLV und .SWF Für das Flash-Vi...
1. MS SQL SERVER 2005 --1. Löschen Sie das Protok...
Ich habe vor Kurzem einen Tencent-Cloud-Server ge...
Vorwort Bei der tatsächlichen Verwendung der Date...
Ein Bildlink <img src="" /> Ich m...
{ {}} Holen Sie sich den Wert, der ursprüngliche ...
In diesem Artikel wird der spezifische Code von V...
Aufgrund der zunehmenden Anzahl von Schaltflächen...
Ich verwende die Funktion zur Spracherkennung mit...
Hallo zusammen, heute werde ich mit Ihnen die WeP...
HTML Code: Code kopieren Der Code lautet wie folgt...
In diesem Artikel erfahren Sie, wie Sie mithilfe ...
Dieser Artikel veranschaulicht anhand von Beispie...