在 Ubuntu(或者说 Linux)里,时间戳一般有几种形式,存数据库的方式也略有不同。下面按常见情况说明。
date +%s # 秒级时间戳
date +%s%3N # 毫秒级时间戳
示例:
1719300000
1719300000123
✅ 本质是一个整数
CREATE TABLE log (
id INT PRIMARY KEY AUTO_INCREMENT,
create_time BIGINT
);
插入:
INSERT INTO log (create_time) VALUES (UNIX_TIMESTAMP());
或来自 Ubuntu:
INSERT INTO log (create_time) VALUES (1719300000);
✅ 优点:
CREATE TABLE log (
id INT PRIMARY KEY AUTO_INCREMENT,
create_time DATETIME
);
插入(从 Unix 时间戳转换):
INSERT INTO log (create_time)
VALUES (FROM_UNIXTIME(1719300000));
或 Ubuntu 直接生成:
date '+%Y-%m-%d %H:%M:%S'
✅ 优点:
⚠️ 注意:
TIMESTAMP 有 2038 年问题CREATE TABLE log (
id BIGINT PRIMARY KEY,
ts BIGINT
);
INSERT INTO log VALUES (1, 1719300000123);
✅ 适合高并发、日志系统
CREATE TABLE log (
id SERIAL PRIMARY KEY,
create_time BIGINT
);
或:
create_time TIMESTAMPTZ
插入:
INSERT INTO log (create_time)
VALUES (TO_TIMESTAMP(1719300000));
CREATE TABLE log (
id INTEGER PRIMARY KEY,
ts INTEGER
);
INSERT INTO log (ts) VALUES (strftime('%s','now'));
| 场景 | 推荐方式 |
|---|---|
| 日志、性能数据 | BIGINT 时间戳 |
| 业务时间 | DATETIME / TIMESTAMPTZ |
| 跨系统 | Unix 时间戳(整数) |
如果你能告诉我:
我可以给你更具体的建表 + 插入 SQL。