2 phương pháp chính
Phương pháp 1: Khi tạo bảng (DEFAULT CURRENT_TIMESTAMP)
CREATE TABLE ten_bang (
ten_cot DATETIME DEFAULT CURRENT_TIMESTAMP
);
Phương pháp 2: Thêm cột vào bảng hiện có (ALTER TABLE)
ALTER TABLE ten_bang
ADD ten_cot DATETIME DEFAULT CURRENT_TIMESTAMP;
Ví dụ chi tiết
Phương pháp 1: Tạo bảng mới
mysql> CREATE TABLE CurrentTimeStampDemo (
-> CreationDate DATETIME DEFAULT CURRENT_TIMESTAMP
-> );
Query OK, 0 rows affected (0.61 sec)
mysql> INSERT INTO CurrentTimeStampDemo VALUES();
Query OK, 1 row affected (0.12 sec)
mysql> SELECT * FROM CurrentTimeStampDemo;
+---------------------+
| CreationDate |
+---------------------+
| 2019-01-02 15:53:03 |
+---------------------+
1 row in set (0.00 sec)
Phương pháp 2: ALTER TABLE
mysql> CREATE TABLE Current_TimestampDemo (
-> Id INT
-> );
Query OK, 0 rows affected (0.43 sec)
mysql> ALTER TABLE Current_TimestampDemo
-> ADD CreationDate DATETIME DEFAULT CURRENT_TIMESTAMP;
Query OK, 0 rows affected (0.53 sec)
mysql> INSERT INTO Current_TimestampDemo(Id) VALUES(1);
Query OK, 1 row affected (0.19 sec)
mysql> SELECT CreationDate FROM Current_TimestampDemo;
+---------------------+
| CreationDate |
+---------------------+
| 2019-01-02 16:25:12 |
+---------------------+
1 row in set (0.00 sec)
Nâng cao: Tự động cập nhật khi UPDATE (ON UPDATE)
CREATE TABLE ten_bang (
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Ví dụ
mysql> CREATE TABLE AutoTimestampDemo (
-> Id INT,
-> CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
-> UpdatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
-> );
Query OK, 0 rows affected (0.55 sec)
mysql> INSERT INTO AutoTimestampDemo(Id) VALUES(1);
Query OK, 1 row affected (0.10 sec)
mysql> SELECT * FROM AutoTimestampDemo;
+------+---------------------+---------------------+
| Id | CreatedAt | UpdatedAt |
+------+---------------------+---------------------+
| 1 | 2024-01-15 10:30:00 | 2024-01-15 10:30:00 |
+------+---------------------+---------------------+
mysql> UPDATE AutoTimestampDemo SET Id = 2 WHERE Id = 1;
Query OK, 1 row affected (0.12 sec)
mysql> SELECT * FROM AutoTimestampDemo;
+------+---------------------+---------------------+
| Id | CreatedAt | UpdatedAt |
+------+---------------------+---------------------+
| 2 | 2024-01-15 10:30:00 | 2024-01-15 10:31:15 |
+------+---------------------+---------------------+
Lưu ý quan trọng
- Chỉ 1 cột cho phép
DEFAULT CURRENT_TIMESTAMP (trước MySQL 5.6.5)
- MySQL 5.6.5+ cho phép nhiều cột timestamp với default
- Kiểu dữ liệu:
TIMESTAMP (1970-2038) vs DATETIME (1000-9999)
TIMESTAMP tự chuyển đổi múi giờ, DATETIME không
Khuyến nghị hiện đại (MySQL 8.0+)
CREATE TABLE ten_bang (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);