美文网首页技术分享程序猿的进阶屋
Mysql保存23:59:59时,自动加一秒的问题

Mysql保存23:59:59时,自动加一秒的问题

作者: 小螺丝钉cici | 来源:发表于2019-08-26 16:47 被阅读0次

今天遇到一个bug。
数据为 2019-08-26 23:59:59 ,存入数据库变为2019-08-27 00:00:00自动加一秒。

并且有些数据加一秒有些没有。根据日志发现参数分别为:
2019-08-26 23:59:59.026(Timestamp)
2019-08-26 23:59:59.845(Timestamp)
当即怀疑是因为后面的毫秒数的原因,会不会类似四舍五入呢?带着这个疑问查了资料发现......

经查阅:


image.png

从这篇Fractional Seconds in Time Values中我们看到5.6.4之前的版本中是不保存毫秒数的,那么高版本中是如何处理的?

image.png

从这篇Conversion Between Date and Time Types中我们看到毫秒数在低于500的时候会舍弃掉,大于等于500会进位,类似四舍五入,既然找到问题的本质原因。

那么只需要设置一下日期的毫秒数即可,防止进位

calendar.set(Calendar.MILLISECOND,0);

相关文章

网友评论

    本文标题:Mysql保存23:59:59时,自动加一秒的问题

    本文链接:https://www.haomeiwen.com/subject/hfddectx.html