温馨提示×

ubuntu时间戳如何存数据库

小樊
48
2026-09-13 05:40:16
栏目: 智能运维

在 Ubuntu(或任何 Linux)系统里,时间戳通常有两种形式

  1. Unix 时间戳(秒/毫秒):如 1718000000
  2. 可读时间(datetime):如 2024-06-10 12:00:00

下面按数据库类型存储方式说明。


一、常见数据库如何存时间戳

1️⃣ MySQL / MariaDB

方式一:存 Unix 时间戳(整数)

CREATE TABLE log (
  id INT PRIMARY KEY,
  create_time INT  -- 秒级时间戳
);

插入:

INSERT INTO log VALUES (1, UNIX_TIMESTAMP());

查询转成时间:

SELECT FROM_UNIXTIME(create_time) FROM log;

方式二:存 DATETIME / TIMESTAMP(推荐)

CREATE TABLE log (
  id INT PRIMARY KEY,
  create_time DATETIME
);

插入(Ubuntu 时间):

INSERT INTO log VALUES (1, NOW());

或:

INSERT INTO log VALUES (1, CURRENT_TIMESTAMP);

推荐

  • DATETIME:不涉及时区
  • TIMESTAMP:受时区影响(存 UTC)

2️⃣ PostgreSQL

CREATE TABLE log (
  id SERIAL PRIMARY KEY,
  create_time TIMESTAMPTZ DEFAULT NOW()
);

插入:

INSERT INTO log (create_time) VALUES (NOW());

Unix 时间戳:

SELECT EXTRACT(EPOCH FROM NOW());

3️⃣ SQLite

CREATE TABLE log (
  id INTEGER PRIMARY KEY,
  create_time INTEGER  -- Unix 时间戳
);

插入:

INSERT INTO log VALUES (1, strftime('%s','now'));

二、Ubuntu 命令获取时间戳

秒级时间戳

date +%s

毫秒级时间戳

date +%s%3N

当前时间字符串

date '+%Y-%m-%d %H:%M:%S'

三、程序里怎么存(示例)

Python

import time
ts = int(time.time())

或:

from datetime import datetime
now = datetime.now()

Shell + MySQL

mysql -u user -p db <<EOF
INSERT INTO log (create_time) VALUES (NOW());
EOF

四、最佳实践建议 ✅

推荐做法

  • 数据库用 DATETIME / TIMESTAMPTZ
  • Ubuntu 设置正确时区
  • 应用层统一用 UTC

不推荐

  • 用字符串存 "2024-06-10"
  • 混用秒和毫秒时间戳

如果你能告诉我:

  • 用的什么数据库(MySQL / PG / SQLite)
  • 时间戳是秒还是毫秒
  • 用什么语言写程序

我可以给你更精确的建表和代码方案

0