MySQL 是一个关系型数据库管理系统,广泛用于存储和管理数据。在 MySQL 中,时间戳(timestamp)是一种数据类型,用于存储日期和时间值。MySQL 的 TIMESTAMP
类型可以存储从 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC 的值。
TIMESTAMP
类型可以存储到秒级精度,而 DATETIME
类型可以存储到毫秒级精度。TIMESTAMP
类型会自动转换为当前时区的值,而 DATETIME
类型则不会。TIMESTAMP
类型占用 4 个字节,而 DATETIME
类型占用 8 个字节。假设我们有一个包含毫秒级时间戳的表 events
,结构如下:
CREATE TABLE events (
id INT AUTO_INCREMENT PRIMARY KEY,
event_name VARCHAR(255),
event_time DATETIME(3)
);
插入一条记录:
INSERT INTO events (event_name, event_time) VALUES ('user_login', '2023-10-05 14:30:15.123');
提取毫秒值:
SELECT event_name, event_time FROM events;
输出结果:
+-------------+-------------------------+
| event_name | event_time |
+-------------+-------------------------+
| user_login | 2023-10-05 14:30:15.123 |
+------------->
TIMESTAMP
类型不能存储毫秒值?原因:TIMESTAMP
类型只能存储到秒级精度,而 DATETIME
类型可以存储到毫秒级精度。
解决方法:使用 DATETIME(3)
类型来存储毫秒值。
CREATE TABLE events (
id INT AUTO_INCREMENT PRIMARY KEY,
event_name VARCHAR(255),
event_time DATETIME(3)
);
TIMESTAMP
转换为毫秒级精度?解决方法:使用 CONVERT
函数将 TIMESTAMP
转换为 DATETIME(3)
类型。
SELECT CONVERT(event_time USING DATETIME(3)) AS event_time_ms FROM events;
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云