Zusammenfassung der Verwendung des Datumsstempels Zeitstempel in MySQL

    Der Zeitstempel-Zeitstempeltyp ist in der MySQL-Datenbank häufiger anzutreffen, aber es ist leicht, einige seiner Merkmale zu übersehen. Ich habe im Interview einen Verlust erlitten. Hier sind einige Ergänzungen zu seiner Verwendung und seinen Merkmalen. Mach dich auch tiefer. Im Allgemeinen verwenden wir Datum, im Allgemeinen Datum oder Datum / Uhrzeit, verwenden Zeit nur, wenn Zeit verwendet wird.

    Im Folgenden wird der Unterschied zwischen Zeitstempel und Datum / Uhrzeit grob erläutert:

     1. Sie können alle Datum und Uhrzeit darstellen. Das Standardformat ist "JJJJ-MM-TT HH: MM: SS", und sie können alle jetzt () oder '20200307225430' oder '2020-03-07 22:54:30' usw. bestehen. Wert, um den Wert festzulegen.

     2. Die Zeitbereiche, die sie darstellen, sind unterschiedlich: Der Zeitstempel steht für UTC 1970-01-01 00: 00: 01-2038-01-19 03:14:07 für unsere Peking-Zeit in China (Bezirk East 8). , Es muss +8 zu jeder vollen Stunde sein, also 1970-01-01 08: 00: 01-2038-01-19 11:14:07. Der Datums- / Zeitbereich ist 1000-01-01 00: 00: 00-9999-12-31 23:59:59.

     3. Standardmäßig hat der Zeitstempel den Standardwert current_timestamp, dh die aktuelle Zeit, und wird bei jeder Änderung automatisch aktualisiert. Die Datums- und Uhrzeitangabe wird nur dann automatisch aktualisiert, wenn der Wert manuell geändert wird.

   Für den Einstellungswert sehen wir uns die folgenden SQL-Ausführungsergebnisse an:

mysql> update users set name='aaaa',create_date=now(),modify_date=now();
Query OK, 3 rows affected (0.05 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select * from users;
+----+------+---------------------+---------------------+
| id | name | create_date         | modify_date         |
+----+------+---------------------+---------------------+
|  1 | aaaa | 2020-03-07 22:56:53 | 2020-03-07 22:56:53 |
|  2 | aaaa | 2020-03-07 22:56:53 | 2020-03-07 22:56:53 |
|  3 | aaaa | 2020-03-07 22:56:53 | 2020-03-07 22:56:53 |
+----+------+---------------------+---------------------+
3 rows in set (0.00 sec)

mysql> update users set name='aaaa',create_date='20200307225730',modify_date=20200307225700;
Query OK, 3 rows affected (0.05 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> update users set name='aaaa',create_date='2020-03-07 22:57:30',modify_date='2020-03-07 22:57:00';
Query OK, 0 rows affected (0.05 sec)
Rows matched: 3  Changed: 0  Warnings: 0

mysql> select * from users;
+----+------+---------------------+---------------------+
| id | name | create_date         | modify_date         |
+----+------+---------------------+---------------------+
|  1 | aaaa | 2020-03-07 22:57:30 | 2020-03-07 22:57:00 |
|  2 | aaaa | 2020-03-07 22:57:30 | 2020-03-07 22:57:00 |
|  3 | aaaa | 2020-03-07 22:57:30 | 2020-03-07 22:57:00 |
+----+------+---------------------+---------------------+
3 rows in set (0.00 sec)

    Für den Zeitbereich des Zeitstempels können wir dies durch die folgende SQL-Anweisung fühlen:

    Für minimale Zeit:

mysql> update users set modifydate = '19700101080000' where id = 7;
1292 - Incorrect datetime value: '19700101080000' for column 'modifydate' at row 1
mysql> update users set modifydate = '19700101080001' where id = 7;
Query OK, 0 rows affected

    Für maximale Zeit: 

mysql> update users set modifydate = '20380119111408' where id = 6;
1292 - Incorrect datetime value: '20380119111408' for column 'modifydate' at row 1
mysql> update users set modifydate = '20380119111407' where id = 6;
Query OK, 0 rows affected

    Im Folgenden konzentrieren wir uns auf die Standardsituation des Zeitstempels und die Situation der Aktualisierung, wenn der Datensatz geändert wird.

    Standardmäßig setzen wir den Spaltentyp auf Zeitstempel, ohne andere Standardwerte festzulegen. Sein Standardwert ist current_timestamp, der aktualisiert wird, wenn der Datensatz später geändert wird.

     

    Wenn wir "modify_date" festlegen, geben wir standardmäßig nur den Zeitstempel an. Es gibt keinen Standardwert, der später festgelegt werden soll, und wir geben die aktuelle Zeit an, zu der wir ihn ändern. Aus der SQL-Anweisung, die Benutzer zum Erstellen von Tabellen anzeigen, geht jedoch hervor, dass er sich anscheinend auf den Standardwert bezieht und aktualisiert wird, wenn der Datensatz geändert wird.

    Wir fügen einen Datensatz ein und ändern dann den Namen des Datensatzes, um die Änderung von modify_date zu sehen:

    

    Wir können den Standardwert beim Definieren der Tabelle angeben und beim Aktualisieren nicht aktualisieren, sodass der Zeitstempel mit dem Datum / Uhrzeit identisch sein kann. Einmal festgelegt, kann er erst später durch manuelle Änderung anstelle der automatischen Aktualisierung geändert werden.

     

    Zu diesem Zeitpunkt können wir die Anweisung zum Erstellen von Tabellen überprüfen:

     

    In diesem Fall gibt es nach der Spaltendefinition keinen aktuellen_Zeitstempel beim Aktualisieren. Die aktuelle Uhrzeit wird nicht automatisch aktualisiert, wenn der Datensatz geändert wird.

    Eine andere Situation ist, dass wir die Standardzeit des Zeitstempels anstelle der aktuellen Zeit auf 0000-00-00 00:00:00 einstellen können. Wenn der Datensatz später geändert wird, wird die aktuelle Zeit automatisch aktualisiert. Obwohl der durch den Zeitstempel angegebene Zeitbereich von 1970-01-01 00:00:01 reicht, kann der Standardwert auf 0000-00-00 00:00:00 eingestellt werden, was ebenfalls sehr seltsam ist, dies jedoch tut. Wir ändern dann die Tabellenstruktur, fügen Datensätze ein und ändern Datensätze:

    

    Genauso gut können wir uns die Aussage zum Tabellenaufbau noch einmal ansehen und herausfinden, was das Besondere an dieser Art der Zeitstempeleinstellung ist:

     

    Wir sehen, dass wir beim Erstellen der Tabelle nur beim Update current_timestamp angegeben und nicht den Standardwert festgelegt haben, aber der zuletzt generierte Wert einen Standardwert von '0000-00-00 00:00:00' generiert hat.

    Zusammenfassend weist der Zeitstempel die folgenden Merkmale auf:

    1. Zeitraum: 1970-01-01 00:00:01 ----- 2038-01-19 03:14:07

    2. Standardmäßig gibt die Anweisung zum Erstellen von Tabellen nur an, dass der Zeitstempel dem Zeitstempel default current_timestamp beim Update current_timestamp entspricht. 

Es hat einen Standardwert, der die aktuelle Zeit ist. Wenn Sie den Datensatz anschließend ändern, müssen Sie den Wert nicht manuell angeben, er kann automatisch aktualisiert werden.

     3. Sie können den angegebenen Wert akzeptieren, den Datensatz so einstellen, dass er ohne Aktualisierung geändert wird, und die Leistung entspricht der von datetime.

     4 、 Zeitstempel bei Aktualisierung current_timestamp 和 Zeitstempel nicht null Standard '0000-00-00 00:00:00' bei Aktualisierung current_timestamp 等价。

Veröffentlichte 529 Originalartikel · Gelobt 287 · 1,47 Millionen Aufrufe

Ich denke du magst

Origin blog.csdn.net/feinifi/article/details/104710836
Empfohlen
Rangfolge