Hành vi cột TIMESTAMP DEFAULT CURRENT_TIMESTAMP khi INSERT không chỉ định giá trị
Khi không cung cấp giá trị cho cột TIMESTAMP có DEFAULT CURRENT_TIMESTAMP, MySQL tự động ghi ngày giờ hiện tại.
Tạo bảng
mysql> create table DemoTable (
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserLoginDate timestamp default current_timestamp
);
Query OK, 0 rows affected (0.61 sec)
Chèn bản ghi không chỉ định cột timestamp
mysql> insert into DemoTable values(); mysql> insert into DemoTable values(); mysql> insert into DemoTable values(); mysql> insert into DemoTable(UserId) values(null);
Kết quả
+--------+---------------------+ | UserId | UserLoginDate | +--------+---------------------+ | 1 | 2019-11-03 12:55:44 | | 2 | 2019-11-03 12:55:45 | | 3 | 2019-11-03 12:55:46 | | 4 | 2019-11-03 12:56:06 | +--------+---------------------+
Giải thích:
- Mỗi
INSERTkhông chỉ định UserLoginDate → tự động lấyCURRENT_TIMESTAMPtại thời điểm thực thi - Thời gian tăng dần theo thứ tự thực thi (giây khác nhau)
INSERT INTO DemoTable(UserId) VALUES(NULL)cũng kích hoạt default cho UserLoginDate
Đặc điểm TIMESTAMP vs DATETIME:
| Đặc điểm | TIMESTAMP | DATETIME |
|---|---|---|
| Khoảng thời gian | 1970-2038 | 1000-9999 |
| Múi giờ | Chuyển đổi UTC ↔ session timezone | Lưu nguyên giá trị nhập |
| DEFAULT CURRENT_TIMESTAMP | Hỗ trợ sẵn | MySQL 5.6.5+ hỗ trợ |
| ON UPDATE CURRENT_TIMESTAMP | Hỗ trợ | MySQL 5.6.5+ hỗ trợ |