Vorwort: Zeitstempelfelder werden häufig in MySQL verwendet. Wenn wir beispielsweise den Zeitpunkt aufzeichnen müssen, zu dem eine Datenzeile erstellt oder geändert wird, verwenden wir normalerweise das Zeitstempelfeld. In diesem Artikel werden hauptsächlich die Verwendung und die zugehörigen Parameter des Zeitstempelfelds vorgestellt. Ich hoffe, dass Sie nach der Lektüre ein tieferes Verständnis des Zeitstempels haben. 1. Einführung in den TIMESTAMP-Feldtyp Der Zeitstempelfeldtyp kann Zeittypdaten speichern. Der Zeitbereich, den der Zeitstempel speichern kann, ist: „1970-01-01 00:00:01.000000“ bis „2038-01-19 03:14:07.999999“. Das Zeitstempelfeld belegt 4 Bytes. In MySQL 5.7 kann der Zeitstempel eine Genauigkeit angeben, d. h. fsp in TIMESTAMP(fsp) kann einen optionalen Wert zwischen 0 und 6 angeben, um die Genauigkeit auf Sekundenbruchteile darzustellen. Der Wert 0 bedeutet, dass kein Dezimalteil vorhanden ist. Wird dieser Wert weggelassen, beträgt die Standardgenauigkeit 0. Machen wir einen einfachen Test: # Zeitstempel kann Präzision angebenmysql> CREATE TABLE `stu_tb` ( -> `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primärschlüssel automatisch inkrementieren', -> `stu_id` int(11) NOT NULL COMMENT 'Matrikelnummer', -> `stu_name` varchar(20) DEFAULT NULL COMMENT 'Studentenname', -> `create_time` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP KOMMENTAR 'Erstellungszeit', -> `update_time` timestamp(2) NICHT NULL STANDARD CURRENT_TIMESTAMP(2) BEIM UPDATE CURRENT_TIMESTAMP(2) KOMMENTAR 'Änderungszeit', -> PRIMÄRSCHLÜSSEL (`id`) ->) ENGINE=InnoDB DEFAULT CHARSET=utf8; Abfrage OK, 0 Zeilen betroffen (0,04 Sek.) mysql> zeigen erstellen Tabelle stu_tb\G *************************** 1. Reihe *************************** Tabelle: stu_tb Tabelle erstellen: CREATE TABLE `stu_tb` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primärschlüssel automatisch inkrementieren', `stu_id` int(11) NOT NULL KOMMENTAR 'Studenten-ID', `stu_name` varchar(20) DEFAULT NULL COMMENT 'Studentenname', `create_time` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP KOMMENTAR 'Erstellungszeit', `update_time` timestamp(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2) COMMENT 'Änderungszeitpunkt', PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB STANDARD-CHARSET=utf8 1 Zeile im Satz (0,00 Sek.) mysql> in stu_tb (stu_id, stu_name) Werte einfügen (1001, 'dfdfa'); Abfrage OK, 1 Zeile betroffen (0,01 Sek.) mysql> wähle * aus stu_tb; +----+--------+----------+---------------------+------------------------+ | ID | Stu-ID | Stu-Name | Erstellungszeit | Aktualisierungszeit | +----+--------+----------+---------------------+------------------------+ | 1 | 1001 | dfdfa | 07.01.2020 17:33:51 | 07.01.2020 17:33:51.63 | +----+--------+----------+---------------------+------------------------+ 1 Zeile im Satz (0,00 Sek.) 2. Parameter, die Zeitstempel beeinflussen Es gibt zwei Hauptparameter, die die Anzeige von Zeitstempeln beeinflussen, nämlich explicit_defaults_for_timestamp und time_zone. Im Folgenden wird kurz die Auswirkung dieser beiden Parameter auf Zeitstempel vorgestellt. Der Parameter explicit_defaults_for_timestamp bestimmt, wie der MySQL-Server Standardwerte und NULL-Werte in Zeitstempelspalten behandelt. Diese Variable wurde seit MySQL 5.6.6 eingeführt. Sie ist in globale Ebene und Sitzungsebene unterteilt. Sie kann dynamisch aktualisiert werden. Der Standardwert ist OFF. Weitere Informationen zu diesem Parameter finden Sie in diesem Artikel. Wenn der Parameter explicit_defaults_for_timestamp standardmäßig auf OFF gesetzt ist, ist das Verhalten wie folgt:
Wenn der Parameter explicit_defaults_for_timestamp auf ON gesetzt ist, ist das Verhalten wie folgt:
Der Parameter time_zone gibt die Zeitzone der Datenbank an. Die Zeitzone ist in globale Ebene und Sitzungsebene unterteilt. Sie kann dynamisch aktualisiert werden. Der Standardwert ist SYSTEM, was bedeutet, dass die Zeitzone des Datenbankdienstes mit der Zeitzone des Systems übereinstimmt. Wenn MySQL Zeitstempel speichert, ist die tatsächlich in der Datenbank gespeicherte Zeit die UTC-Zeit. Beim Abfragen und Anzeigen werden je nach spezifischer Zeitzone unterschiedliche Zeiten angezeigt. Sie können default_time_zone in die Konfigurationsdatei schreiben, um die Zeitzone anzugeben. Um beispielsweise die chinesische Zeitzone 8 anzugeben, können Sie schreiben: default_time_zone='+8:00'. Nachfolgend sehen Sie eine einfache Demonstration der Zeitanzeige in verschiedenen Zeitzonen: # Anfängliche Standardwertemysql> zeigt Variablen wie „%time_zone%“ an; +------------------+--------+ | Variablenname | Wert | +------------------+--------+ | Systemzeitzone | CST | | Zeitzone | SYSTEM | +------------------+--------+ 2 Zeilen im Satz (0,00 Sek.) mysql> wähle * aus testdb.stu_tb; +----+--------+----------+---------------------+------------------------+ | ID | Stu-ID | Stu-Name | Erstellungszeit | Aktualisierungszeit | +----+--------+----------+---------------------+------------------------+ | 1 | 1001 | dfdfa | 07.01.2020 17:33:51 | 07.01.2020 17:33:51.63 | +----+--------+----------+---------------------+------------------------+ 1 Zeile im Satz (0,00 Sek.) # Wechseln Sie zur UTC-Zeitzone und stellen Sie die Verbindung erneut her, um festzustellen, dass sich die im Zeitstempel gespeicherte Zeit geändert hat mysql> set global time_zone='+0:00'; mysql> Variablen wie „%time_zone%“ anzeigen; +------------------+--------+ | Variablenname | Wert | +------------------+--------+ | Systemzeitzone | CST | | Zeitzone | +00:00 | +------------------+--------+ 2 Zeilen im Satz (0,01 Sek.) mysql> wähle * aus testdb.stu_tb; +----+--------+----------+---------------------+------------------------+ | ID | Stu-ID | Stu-Name | Erstellungszeit | Aktualisierungszeit | +----+--------+----------+---------------------+------------------------+ | 1 | 1001 | dfdfa | 07.01.2020 09:33:51 | 07.01.2020 09:33:51.63 | +----+--------+----------+---------------------+------------------------+ 1 Zeile im Satz (0,00 Sek.) 3. Best Practices für die Verwendung von TIMESTAMP Es gibt viele Variationen von TIMESTAMP. Im Folgenden sind einige der am häufigsten verwendeten aufgeführt:
Diese Datenspalte wird beim Erstellen neuer Datensätze und beim Ändern vorhandener Datensätze aktualisiert.
Setzen Sie dieses Feld beim Erstellen eines neuen Datensatzes auf die aktuelle Zeit, aktualisieren Sie es jedoch nicht, wenn Sie es später ändern.
Setzen Sie dieses Feld auf 0, wenn Sie einen neuen Datensatz erstellen, und aktualisieren Sie es, wenn Sie ihn später ändern.
Setzen Sie dieses Feld beim Erstellen eines neuen Datensatzes auf den angegebenen Wert und aktualisieren Sie es, wenn Sie es später ändern. In der Praxis empfiehlt es sich, die Tabelle folgendermaßen zu erstellen: CREATE TABLE `Tabellenname` ( `increment_id` INT UNSIGNED NOT NULL auto_increment COMMENT 'Primärschlüssel automatisch inkrementieren', ... `create_time` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP KOMMENTAR 'Erstellungszeit', `update_time` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP KOMMENTAR 'Änderungszeit', PRIMÄRSCHLÜSSEL (`increment_id`) )ENGINE=InnoDB STANDARD-CHARSET=utf8; Das heißt, jede Datenzeile enthält die Erstellungszeit und die Änderungszeit. Das Programm muss beim Schreiben von Daten die angegebene Erstellungszeit und Änderungszeit nicht anzeigen, und der Standardwert wird automatisch ausgefüllt. Hier sind einige Vorschläge und Erfahrungen zum Thema Zeitstempel, die Ihnen hoffentlich weiterhelfen: Die Datentabelle verfügt über die Zeitstempelfelder „create_time“ und „update_time“ und es sind Standardwerte festgelegt. Zusammenfassen: In diesem Artikel wird die Verwendung von Zeitstempeln ausführlich beschrieben. Außerdem stellen wir kurz mehrere Parameter vor, die sich auf den Zeitstempel auswirken. Ich hoffe, dass die Praktiken zur Verwendung von Zeitstempeln und die damit verbundenen Vorschläge für Sie hilfreich sind. Tatsächlich sind diese Inhalte in den offiziellen Dokumenten aufgezeichnet. Sie können die offiziellen Dokumente häufiger lesen. PS: Ich habe in letzter Zeit einige Werbeartikel veröffentlicht, um meinen Lebensunterhalt zu verdienen. Ich hoffe, es macht Ihnen nichts aus. Nur wenn ich ein Einkommen habe, kann ich die Motivation aufbringen, weiter zu schreiben. Dieser öffentliche Account wird sich auch in Zukunft auf originale technische Artikel konzentrieren. Aufmerksame Leser werden feststellen, dass fast jeden Freitag technische Artikel veröffentlicht werden. Seien Sie versichert, dass die Artikel vom Freitag absolut nützlich sind. Vielen Dank für Ihre Unterstützung. Oben finden Sie detaillierte Informationen zur Verwendung von MySQL-Zeitstempeln. Weitere Informationen zu MySQL-Zeitstempeln finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Elementui exportiert Daten in XLSX- und Excel-Tabellen
Grundlegende Syntax der MySQL-Datenbank DDL-Opera...
Inhaltsverzeichnis 1. Einführung in den Plattform...
In diesem Artikelbeispiel wird der spezifische Co...
HTML ist die Abkürzung für Hypertext Markup Langua...
Reproduktion des Problems Alibaba Cloud Server, b...
Das img-Tag in XHTML sollte wie folgt geschrieben...
Ich habe vor Kurzem in einer neuen Firma angefang...
Klicken Sie auf die Schaltfläche, um den Text in ...
Grafisches Tutorial zur Installation und Konfigur...
Wenn wir eine Webseite erstellen, möchten wir man...
Die Installationsmethode von MySQL5.7 rpm unter L...
Inhaltsverzeichnis Vorwort Rendern setTable-Kompo...
Inhaltsverzeichnis Problembeschreibung Prinzipana...
Keine Lücken auf beiden Seiten, Lücken zwischen j...
Ich habe Node auf dem Laufwerk D installiert und ...