Mysql datetime精度问题修复

287 阅读1分钟

背景

业务中有个配置表,定时进行更新,并根据更新时间清除历史数据

现象

偶发配置表所有数据都被清空了,正常每次定时更新都存在数据

原因

业务开始通过new Date()记录时间戳2024-03-22 10:59:59.520,每次进行数据更新(包含新增)数据时,update_time为2024-03-22 10:59:59.678,插入到数据库后变成了2024-03-22 10:59:59, 然后根据记录的时间戳进行清除数据,导致新增的数据也被清除了

解决办法

1.自定义获取当前时间的方法将毫秒设置为000

2.将字段设置为精度修改为毫秒 DATETIME(3)