温馨提示×

ubuntu时间戳怎样存数据库

小樊
51
2026-09-28 09:43:55
栏目: 智能运维

在 Ubuntu(或者说 Linux)里,时间戳一般有几种形式,存数据库的方式也略有不同。下面按常见情况说明。


一、Ubuntu 中常见的时间戳类型

1. Unix 时间戳(秒 / 毫秒)

date +%s        # 秒级时间戳
date +%s%3N     # 毫秒级时间戳

示例:

1719300000
1719300000123

✅ 本质是一个整数


二、数据库中如何存储

✅ 方案 1:存成整数(最推荐,跨平台、跨数据库)

MySQL

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);

✅ 优点:

  • 简单
  • 不受时区影响
  • 查询快

✅ 方案 2:存成 DATETIME / TIMESTAMP(数据库原生时间)

MySQL

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'

✅ 优点:

  • 可读性好
  • 支持时间函数(DATE_ADD 等)

⚠️ 注意:

  • TIMESTAMP 有 2038 年问题
  • 受时区影响

✅ 方案 3:毫秒时间戳(BIGINT)

CREATE TABLE log (
  id BIGINT PRIMARY KEY,
  ts BIGINT
);
INSERT INTO log VALUES (1, 1719300000123);

✅ 适合高并发、日志系统


三、不同数据库示例

PostgreSQL

CREATE TABLE log (
  id SERIAL PRIMARY KEY,
  create_time BIGINT
);

或:

create_time TIMESTAMPTZ

插入:

INSERT INTO log (create_time)
VALUES (TO_TIMESTAMP(1719300000));

SQLite

CREATE TABLE log (
  id INTEGER PRIMARY KEY,
  ts INTEGER
);
INSERT INTO log (ts) VALUES (strftime('%s','now'));

四、推荐做法(总结)

场景 推荐方式
日志、性能数据 BIGINT 时间戳
业务时间 DATETIME / TIMESTAMPTZ
跨系统 Unix 时间戳(整数)

如果你能告诉我:

  • 使用的 数据库类型
  • 时间戳是 秒还是毫秒
  • 是否涉及时区

我可以给你更具体的建表 + 插入 SQL。

0 踩