MySQL中的时间戳用于记录数据修改或添加的时间。它有以下两种类型:
- CURRENT_TIMESTAMP:记录行插入或更新时的时间。
sql
CREATE TABLE messages (
id INT PRIMARY KEY,
content VARCHAR(100),
created_at TIMESTAMP # 默认使用CURRENT_TIMESTAMP
);
INSERT INTO messages (id, content)
VALUES (1, 'Hello');
SELECT * FROM messages;
输出:
+----+------+---------------------+
| id | content | created_at |
+----+------+---------------------+
| 1 | Hello | 2020-01-01 12:00:00|
+----+------+---------------------+
- ON UPDATE CURRENT_TIMESTAMP:只在行更新时记录时间。
sql
CREATE TABLE messages (
id INT PRIMARY KEY,
content VARCHAR(100),
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO messages (id, content)
VALUES (1, 'Hello');
UPDATE messages SET content = 'Hi' WHERE id = 1;
SELECT * FROM messages;
输出:
+----+------+---------------------+
| id | content | updated_at |
+----+------+---------------------+
| 1 | Hi | 2020-01-02 12:00:00|
+----+------+---------------------+
时间戳主要用于:
- 记录行的变更时间,用于修复或审计。
- 定期清理历史数据。
- 基于时间进行数据分类管理。
TIMEZONE参数可用于设置时区,如:
sql
CREATE TABLE messages (
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;