In MySQL ist der Zeitstempel-Datentyp ein spezieller Datentyp. Er kann die Zeit automatisch aktualisieren, solange Sie den Datensatz-Zeitstempel aktualisieren, ohne ein Programm zum Aktualisieren zu verwenden.
Normalerweise gibt es in der Tabelle ein Erstellungsdatum . Für Datumsfelder verfügen andere Datenbanken über Standardwertoptionen. MySQL hat auch einen Standardwert-Zeitstempel, aber in MySQL wird der Zeitstempelwert nicht nur durch Einfügen, sondern auch durch Ändern aktualisiert!
Auf diese Weise ist es nicht mehr das Erstellungsdatum. Es ist besser, es als Aktualisierungsdatum zu verwenden!
Um das Erstellungsdatum in MySQL aufzuzeichnen, müssen Sie datetime verwenden und dann zum Abschluss die Funktion NOW() verwenden!
1, TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Aktualisieren Sie diese Datenspalte, wenn Sie neue Datensätze erstellen und bestehende Datensätze ändern
2, TIMESTAMP DEFAULT CURRENT_TIMESTAMP, wenn Sie neue Datensätze erstellen
Das Feld wird auf die aktuelle Zeit eingestellt, aber wenn es in der Zukunft geändert wird, wird es nicht mehr aktualisiert
3, TIMESTAMP ON UPDATE CURRENT_TIMESTAMP Setzen Sie dieses Feld beim Erstellen eines neuen Datensatzes auf 0
, automatisch UPDATE und INSERT auf die aktuelle Zeit:
Tabelle:
---------------------------------
Tabelle Tabelle erstellen
- -- --- ------------------------- CREATE TABLE `t1` ( `p_c` int(11) NOT NULL, `p_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
Daten:
1 2007-10-08 11:53:35
2 2007-10-08 11:54:00
einfügen in t1(p_c) select 3;update t1 set p_c = 2 where p_c = 2;
Daten:
1 2007-10-08 11:53:35
2 2007-10-08 12: 00:37
3 2007-10-08 12:00:37
2. Automatisch auf die aktuelle Zeit einfügen, aber nicht automatisch aktualisieren.
Tabelle:
------------------------------------------------
Tabelle Tabelle erstellen
------------------------------------
TABELLE `t1` ERSTELLEN ( `p_c` int( 11) NICHT NULL, `p_time` Zeitstempel NICHT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
Daten:
insert into t1(p_c) select 4;update t1 set p_c = 3 where p_c = 3;
1 2007-10-08 11:53:35
2 2007-10-08 12:00:37
3 2007-10-08 12:00:37
4 2007-10-08 12:05 :19
3. Es darf keine zwei Felder in einer Tabelle geben, deren Standardwert die aktuelle Zeit ist, sonst tritt ein Fehler auf. Aber anderen geht es gut.
Tabelle:
------------------------------------------------
Tabelle Tabelle erstellen
------ ------------ CREATE TABLE `t1` ( `p_c` int(11) NOT NULL, ` p_time ` Zeitstempel NICHT NULL DEFAULT CURRENT_TIMESTAMP, `p_timew2` Zeitstempel NICHT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
Daten:
1 2007-10-08 11 : 53:35 0000-00-00 00:00:00
2 2007-10-08 12:00:37 0000-00-00 00:00:00
3 2007-10-08 12:00 : 37 0000-00-00 00:00:00
4 2007-10-08 12:05:19 0000-00-00 00:00:00
Im Vergleich dazu hat meine Aussage weniger „auf Aktualisierung“ CURRENT_TIMESTAMP“ oder „Standard CURRENT_TIMESTAMP“. Auf diese Weise legt das Zeitstempelfeld nur den Zeitpunkt fest, zu dem die Daten eingefügt werden, und es gibt keine Änderung, wenn sie aktualisiert werden. Es spielt natürlich keine Rolle, ob Sie nur dieses Ziel erreichen möchten 1: Wenn bei der Definition sowohl die Klauseln DEFAULT CURRENT_TIMESTAMP als auch ON UPDATE CURRENT_TIMESTAMP definiert sind, verwendet der Spaltenwert standardmäßig den aktuellen Zeitstempel und wird automatisch aktualisiert.
2: Wenn die DEFAULT- oder ON UPDATE-Klausel nicht verwendet wird, entspricht sie DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.
3: Wenn nur die DEFAULT CURRENT_TIMESTAMP-Klausel, aber keine ON UPDATE-Klausel vorhanden ist, wird der Spaltenwert standardmäßig auf den aktuellen Zeitstempel gesetzt, aber nicht automatisch aktualisiert.
4: Wenn die DEFAULT-Klausel nicht verwendet wird, aber die ON UPDATE CURRENT_TIMESTAMP-Klausel vorhanden ist, ist die Spalte standardmäßig auf 0 gesetzt und wird automatisch aktualisiert.
5: Wenn ein konstanter Wert DEFAULT vorhanden ist, hat die Spalte einen Standardwert und wird nicht automatisch mit dem aktuellen Zeitstempel initialisiert. Wenn die Spalte auch über eine ON UPDATE CURRENT_TIMESTAMP-Klausel verfügt, wird dieser Zeitstempel automatisch aktualisiert, andernfalls verfügt die Spalte über eine Standardkonstante, wird aber nicht automatisch aktualisiert.
Mit anderen Worten: Sie können den aktuellen Zeitstempel verwenden, um den Wert zu initialisieren und automatisch zu aktualisieren, oder einen davon oder keinen von beiden. (Beispielsweise können Sie beim Definieren die automatische Aktualisierung angeben, aber nicht die Initialisierung.) Die folgende Felddefinition veranschaulicht diese Situationen:
Das Obige ist der Inhalt der automatischen Zeitstempel-Aktualisierungszeitmethode in der MySQL-Datenbank, mehr Für Verwandte Inhalte, achten Sie bitte auf die chinesische PHP-Website (www.php.cn)!