在 CentOS(或任意 Linux)环境下,“时间戳怎么存数据库”通常有两种常见理解,我分别说明,并给出推荐做法和示例。
Linux 时间戳通常指:
date +%s → 1719300000date +%s%3N不要直接存整数时间戳,用数据库原生时间类型:
DATETIME / TIMESTAMPTIMESTAMP好处
示例(MySQL)
CREATE TABLE log (
id INT PRIMARY KEY AUTO_INCREMENT,
create_time DATETIME
);
CentOS 写入:
now=$(date '+%Y-%m-%d %H:%M:%S')
mysql -e "INSERT INTO log(create_time) VALUES('$now')"
用 BIGINT
CREATE TABLE log (
id INT PRIMARY KEY AUTO_INCREMENT,
ts BIGINT
);
CentOS:
ts=$(date +%s)
mysql -e "INSERT INTO log(ts) VALUES($ts)"
✅ 适合:日志、性能统计、跨系统时间传递
#!/bin/bash
TIME=$(date '+%Y-%m-%d %H:%M:%S')
mysql -uuser -ppass dbname <<EOF
INSERT INTO t(time_col) VALUES('$TIME');
EOF
| 场景 | 推荐类型 |
|---|---|
| 本地业务时间 | DATETIME |
| 跨时区系统 | TIMESTAMP |
| 日志/性能 | BIGINT(时间戳) |
| 精确事件 | TIMESTAMP(3)(毫秒) |
VARCHAR 存时间(无法排序、比较)如果你能告诉我:
我可以直接给你最合适的一行命令或建表语句。