mysql中处理13位毫秒级时间戳需先除以1000转换为秒级,因from_unixtime函数仅支持秒级时间戳;直接使用13位时间戳会导致错误结果或null,故必须进行单位换算,例如select from_unixtime(timestamp_ms / 1000, '%y-%m-%d %h:%i:%s')可将毫秒时间戳转为可读日期格式;而将日期转为13位时间戳则需使用unix_timestamp()函数结果乘以1000,并存储于bigint类型字段以避免溢出;常见问题包括使用int导致溢出、毫秒精度丢失、时区不一致及混合时间戳格式混乱,因此应统一存储为bigint类型的毫秒时间戳并在应用层或数据库层做好时区处理,确保数据一致性与准确性。

MySQL中处理13位数字的时间戳,也就是毫秒级时间戳,核心在于
FROM_UNIXTIME
要将存储为13位数字(毫秒)的时间戳转换为可读的日期格式,最直接的办法就是利用MySQL的数学运算和内置函数。
假设你的时间戳字段名为
timestamp_ms
BIGINT
SELECT
FROM_UNIXTIME(timestamp_ms / 1000, '%Y-%m-%d %H:%i:%s') AS formatted_datetime,
FROM_UNIXTIME(timestamp_ms / 1000, '%Y-%m-%d') AS formatted_date_only,
FROM_UNIXTIME(timestamp_ms / 1000, '%H:%i:%s') AS formatted_time_only
FROM
your_table_name;这里,
timestamp_ms / 1000
FROM_UNIXTIME()
%Y-%m-%d %H:%i:%s
FROM_UNIXTIME
%f
这其实是个很基础但又特别容易让人混淆的点。简单来说,我们常说的Unix时间戳,它是一个整数,代表从1970年1月1日00:00:00 UTC(协调世界时)开始经过的秒数。所以,一个10位的数字(比如
1678886400
但现实应用中,很多系统为了更高的精度,会记录毫秒级时间戳。这就出现了13位数字的时间戳,比如
1678886400000
MySQL的
FROM_UNIXTIME()
NULL
所以,关键就在于这个“单位”的转换。就像你和老外交流,他只懂英尺,你却一直说米,那肯定鸡同鸭讲。我们必须把“毫米”换算成“米”,
FROM_UNIXTIME
反过来,如果你想把一个标准的日期时间字符串或者MySQL的
DATETIME
TIMESTAMP
MySQL提供了一个非常方便的函数叫
UNIX_TIMESTAMP()
比如,你想把当前时间转换成毫秒时间戳:
SELECT UNIX_TIMESTAMP(NOW()) * 1000 AS current_timestamp_ms;
如果你有一个具体的日期时间字符串,也可以这样做:
SELECT UNIX_TIMESTAMP('2023-10-27 15:30:00') * 1000 AS specific_timestamp_ms;这里面的逻辑也很直白:
UNIX_TIMESTAMP()
1000
关于存储: 既然是13位的数字,它的大小会超过普通
INT
2,147,483,647
BIGINT
处理这种毫秒级时间戳,确实有些坑是比较容易踩到的。
数据类型选择不当: 这是最常见的错误,没有之一。很多人习惯性地用
INT
INT
BIGINT
毫秒精度丢失: 虽然我们把13位毫秒时间戳转换成了秒级再处理,但如果你期望在MySQL中直接显示毫秒,那就会遇到问题。
FROM_UNIXTIME()
BIGINT
NOW(6)
FROM_UNIXTIME
时区问题: Unix时间戳本身是UTC时间。
FROM_UNIXTIME()
CONVERT_TZ()
混合时间戳格式: 有时候一个系统里可能同时存在10位(秒)和13位(毫秒)的时间戳,这会让你在处理时非常头疼。你得在业务逻辑层面做好判断,或者在数据入库时就统一成一种格式。我个人倾向于在数据库层面统一存储为毫秒级(
BIGINT
不必要的复杂性: 有些时候,如果你只是想记录一个事件发生的时间,MySQL自带的
DATETIME
TIMESTAMP
TIMESTAMP
以上就是MySQL时间戳处理指南 13位数字转日期格式的实用技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号