专栏名称: 脚本之家
脚本之家(jb51.net)是国内专业的网站建设资源、脚本编程学习类网站,以后将为大家分享更多有用的信息,希望大家多多支持宣传。
目录
相关文章推荐
51找翻译  ·  周日开课!ESG文件中英翻译课-只需189元 ·  8 小时前  
51找翻译  ·  开课!ESG文件中英翻译课-只需189元 ·  昨天  
51找翻译  ·  欢迎加入自由译者社群 ·  昨天  
51找翻译  ·  有价值的中译英笔译课不多? ... ·  2 天前  
51好读  ›  专栏  ›  脚本之家

MySQL datetime 类型精度设置踩坑

脚本之家  · 公众号  ·  · 2025-05-28 17:00

正文

请到「今天看啥」查看全文


datetime 类型的精度问题

1.1 默认精度限制

MySQL 的 datetime 类型默认 仅精确到秒级 (即不包含毫秒或微秒)。例如,插入值 2025-05-26 10:14:59.999 时,实际存储的值会被截断为 2025-05-26 10:15:00 。这种行为在 MySQL 5.6.4 之前的版本中尤为常见,即使字段名显示为 datetime ,实际存储时也会丢失小数部分的精度。

1.2 四舍五入与进位问题

当插入的毫秒值超过 0.5 秒时,MySQL 会 自动进位 。例如:

INSERT INTO t_user (join_time) VALUES ('2025-05-26 10:14:59.765');

若字段未声明精度(即 datetime 而非 datetime(3) ),存储结果将变为 2025-05-26 10:15:00 ,而非预期的 2025-05-26 10:14:59.765 。这种行为可能导致业务逻辑中的时间计算错误(如订单超时判断、日志时间戳分析等)。

1.3 实际案例:毫秒级精度丢失引发的业务异常

某电商平台在处理订单结算时,发现部分订单的 end_time 字段在插入 TiDB 后,值从 2022-11-03 23:59:59.999 被进位为 2022-11-04 00:00:00 。由于系统依赖此字段判断订单是否在当日有效,最终导致大量订单被错误标记为“过期”,造成客户投诉和财务损失。

二、问题根源分析

2.1 MySQL 版本差异

  • MySQL 5.6.4 之前






请到「今天看啥」查看全文