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
Das 10-tägige Tutorial verwendet eine äußerst ver...
In diesem Artikel wird der Verbindungsfehler ECON...
Ich persönlich denke, dass die dekomprimierte Ver...
1. Dokumentenfluss und Floating 1. Was ist Dokume...
Wenn ich diesen Artikel so nenne, wird vielleicht ...
Inhaltsverzeichnis 1 Was ist SSH 2 Konfigurieren ...
Legen Sie Ihr eigenes Webprojekt im Verzeichnis w...
Bevor die neue CSS-Eigenschaft „contain“ vorgeste...
<br />Welche Grundsätze sollten beachtet wer...
Detaillierte Analyse der SQL-Ausführungsschritte ...
Inhaltsverzeichnis Vorwort 1. Aktuelle gcc-Versio...
1. Navigation: Ungeordnete Liste vs. andere Besch...
1. Geben Sie zuerst das MySQL des Servers ein, um...
Seit Kurzem besteht im Projekt die Anforderung, B...
MySQL 5.7.8 und höher unterstützt nun einen nativ...