今天遇到一个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)
当即怀疑是因为后面的毫秒数的原因,会不会类似四舍五入呢?带着这个疑问查了资料发现......
经查阅:
从这篇Fractional Seconds in Time Values中我们看到5.6.4
之前的版本中是不保存毫秒数的,那么高版本中是如何处理的?
从这篇Conversion Between Date and Time Types中我们看到毫秒数在低于500的时候会舍弃掉,大于等于500会进位,类似四舍五入
,既然找到问题的本质原因。
那么只需要设置一下日期的毫秒数即可,防止进位
calendar.set(Calendar.MILLISECOND,0);