1. Wie wird die aktuelle Uhrzeit in MySQL dargestellt?Tatsächlich gibt es viele Möglichkeiten, dies auszudrücken, die wie folgt zusammengefasst werden können:
2. Vergleich zwischen TIMESTAMP und DATETIMEEin vollständiges Datumsformat lautet wie folgt: JJJJ-MM-TT HH:MM:SS[.fraction], das in zwei Teile unterteilt werden kann: Datumsteil und Zeitteil. Der Datumsteil entspricht dem Format „JJJJ-MM-TT“ und der Zeitteil entspricht dem Format „HH:MM:SS[.fraction]“. Für das Datumsfeld wird nur der Datumsteil unterstützt. Wenn der Zeitteil eingefügt wird, wird der Inhalt dieses Teils verworfen und eine Warnung angezeigt. Wie unten dargestellt: mysql> Tabelle erstellen Test (ID Int, Einstellungsdatum); Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> in Testwerte einfügen (1, '20151208000000'); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> in Testwerte einfügen (1, '20151208104400'); Abfrage OK, 1 Zeile betroffen, 1 Warnung (0,01 Sek.) mysql> wähle * aus Test; +------+------------+ | ID | Einstellungsdatum | +------+------------+ | 1 | 08.12.2015 | | 1 | 08.12.2015 | +------+------------+ 2 Zeilen im Satz (0,00 Sek.) Hinweis: Der erste löst keine Warnung aus, da sein Zeitanteil 0 ist. Ähnlichkeiten zwischen TIMESTAMP und DATETIME:1> Beide können verwendet werden, um Datumsangaben vom Typ JJJJ-MM-TT HH:MM:SS[.fraction] darzustellen. Die Unterschiede zwischen TIMESTAMP und DATETIME sind: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. Als nächstes überprüfen wir Erstellen Sie zunächst zwei Testtabellen, eine im Zeitstempelformat und eine im Datums-/Uhrzeitformat. mysql> Tabelle erstellen Test (ID Int, Einstellungsdatum Zeitstempel); Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> in Testwerte einfügen (1, '20151208000000'); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> Tabelle erstellen test1(id int, hiredate datetime); Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> in Test1 Werte einfügen (1, '20151208000000'); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> wähle * aus Test; +------+---------------------+ | ID | Einstellungsdatum | +------+---------------------+ | 1 | 08.12.2015 00:00:00 | +------+---------------------+ 1 Zeile im Satz (0,01 Sek.) mysql> wähle * aus test1; +------+---------------------+ | ID | Einstellungsdatum | +------+---------------------+ | 1 | 08.12.2015 00:00:00 | +------+---------------------+ 1 Zeile im Satz (0,00 Sek.) Die Ausgabe beider ist gleich. Zweitens ändern Sie die Zeitzone der aktuellen Sitzung mysql> Variablen wie „%time_zone%“ anzeigen; +------------------+--------+ | Variablenname | Wert | +------------------+--------+ | Systemzeitzone | CST | | Zeitzone | SYSTEM | +------------------+--------+ 2 Zeilen im Satz (0,00 Sek.) mysql> setze Zeitzone='+0:00'; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> wähle * aus Test; +------+---------------------+ | ID | Einstellungsdatum | +------+---------------------+ | 1 | 07.12.2015 16:00:00 | +------+---------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> wähle * aus test1; +------+---------------------+ | ID | Einstellungsdatum | +------+---------------------+ | 1 | 08.12.2015 00:00:00 | +------+---------------------+ 1 Zeile im Satz (0,01 Sek.) Das obige "CST" bezieht sich auf die Systemzeit des Hosts, auf dem sich MySQL befindet. Dies ist die Abkürzung für China Standard Time, China Standard Time UT+8:00 Die Ergebnisse zeigen, dass die im Test zurückgegebene Zeit 8 Stunden früher ist, während die Zeit in Test1 unverändert bleibt. Dadurch wird der Unterschied zwischen den beiden vollständig bestätigt. 2> Der von den 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 von TIMESTAMP und DATETIMESchauen wir uns zunächst die folgenden Operationen an mysql> Tabelle erstellen Test (ID Int, Einstellungsdatum Zeitstempel); Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> in Test(ID) Werte(1) einfügen; Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> wähle * aus Test; +------+---------------------+ | ID | Einstellungsdatum | +------+---------------------+ | 1 | 08.12.2015 14:34:46 | +------+---------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> zeigen erstellen Tabelle Test\G *************************** 1. Reihe *************************** Tabelle: Test Tabelle erstellen: CREATE TABLE `test` ( `id` int(11) DEFAULT NULL, `hiredate` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB STANDARD CHARSET=latin1 1 Zeile im Satz (0,00 Sek.) Sieht es ein bisschen seltsam aus? Ich habe das Feld „hiredate“ nicht eingefügt und sein Wert wurde automatisch auf den aktuellen Wert geändert. Außerdem habe ich beim Erstellen der Tabelle den „DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP“ nicht definiert, der im Ergebnis „show create table test\G“ angezeigt wird. Tatsächlich handelt es sich bei dieser Funktion um eine 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, wie unten gezeigt: mysql> Variablen wie „%explicit_defaults_for_timestamp%“ anzeigen; +---------------------------------+--------+ | Variablenname | Wert | +---------------------------------+--------+ | explizite_Vorgaben_für_Zeitstempel | AUS | +---------------------------------+--------+ 1 Zeile im Satz (0,00 Sek.) Werfen wir einen Blick auf die offizielle Beschreibung unten:
Dies ist häufig nicht das, was wir möchten. Wie kann ich es deaktivieren? 1. Setzen Sie den Wert von „explicit_defaults_for_timestamp“ auf ON. 2. Der Wert von „explicit_defaults_for_timestamp“ ist immer noch OFF. Es gibt zwei Möglichkeiten, ihn zu deaktivieren. 1> Verwenden Sie die Klausel DEFAULT, um einen Standardwert für die Spalte anzugeben 2> Geben Sie das NULL-Attribut für die Spalte an. Wie unten dargestellt: mysql> Tabelle erstellen test1(id int, Einstellungsdatum, Zeitstempel null); Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> zeigen erstellen Tabelle test1\G *************************** 1. Reihe *************************** Tabelle: test1 Tabelle erstellen: CREATE TABLE `test1` ( `id` int(11) DEFAULT NULL, `hiredate` Zeitstempel NULL DEFAULT NULL ) ENGINE=InnoDB STANDARD CHARSET=latin1 1 Zeile im Satz (0,00 Sek.) mysql> Tabelle erstellen test2(id int, Einstellungsdatum, Zeitstempel, Standard 0); Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> zeigen erstellen Tabelle test2\G *************************** 1. Reihe *************************** Tabelle: test2 Tabelle erstellen: CREATE TABLE `test2` ( `id` int(11) DEFAULT NULL, `hiredate` Zeitstempel NICHT NULL STANDARD '0000-00-00 00:00:00' ) ENGINE=InnoDB STANDARD CHARSET=latin1 1 Zeile im Satz (0,00 Sek.) Vor MySQL 5.6.5 war die automatische Initialisierung und Aktualisierung nur auf TIMESTAMP anwendbar, und höchstens ein TIMESTAMP-Feld in einer Tabelle durfte diese Funktion verwenden. Ab MySQL 5.6.5 gilt die automatische Initialisierung und Aktualisierung sowohl für TIMESTAMP- als auch für DATETIME-Werte, ohne Begrenzung der Werteanzahl. siehe:1. http://dev.mysql.com/doc/refman/5.6/en/datetime.html 2. http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html Dies ist das Ende dieses Artikels über die Zusammenfassung der Verwendung von Datetime und Timestamp in MySQL. Weitere relevante MySQL Datetime- und Timestamp-Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: CSS realisiert den Effekt „Eckschnitt + Rahmen + Projektion + Farbverlauf im Inhaltshintergrund“
>>: Detaillierte Einführung in die Bereitstellung eines K8S-Clusters auf einem CentOS7-System
Zunächst die Struktur innerhalb des Nginx-Contain...
1. Vorbereitung vor der Installation Überprüfen S...
Vorwort Ich arbeite derzeit an der Datenanalysepl...
Verwenden Sie JS zum Vergrößern und Verkleinern, ...
Inhaltsverzeichnis 1. Subunternehmer für Miniprog...
Der Unterschied: 1. InnoDB unterstützt Transaktio...
Daten kopieren Beim Remote-Kopieren von Daten ver...
<br />In diesem Artikel wurden die verschied...
Inhaltsverzeichnis Vorwort Persistenz globaler Pa...
In diesem Artikel wird der spezifische Code von V...
Beim Schreiben von HTML definieren wir häufig mehr...
deepin und Ubuntu sind beides auf debian basieren...
Inhaltsverzeichnis 1. Speichermodell und Laufzeit...
Karussellanzeige der Vue-Karte beim Umschalten de...
Dokumentation: https://github.com/hilongjw/vue-la...