今天遇到一個bug。
數(shù)據(jù)為 2019-08-26 23:59:59 鸵隧,存入數(shù)據(jù)庫變?yōu)?019-08-27 00:00:00自動加一秒绸罗。
并且有些數(shù)據(jù)加一秒有些沒有。根據(jù)日志發(fā)現(xiàn)參數(shù)分別為:
2019-08-26 23:59:59.026(Timestamp)
2019-08-26 23:59:59.845(Timestamp)
當即懷疑是因為后面的毫秒數(shù)的原因豆瘫,會不會類似四舍五入呢珊蟀?帶著這個疑問查了資料發(fā)現(xiàn)......
經(jīng)查閱:
image.png
從這篇Fractional Seconds in Time Values中我們看到5.6.4
之前的版本中是不保存毫秒數(shù)的,那么高版本中是如何處理的外驱?
image.png
從這篇Conversion Between Date and Time Types中我們看到毫秒數(shù)在低于500的時候會舍棄掉育灸,大于等于500會進位,類似四舍五入
,既然找到問題的本質(zhì)原因昵宇。
那么只需要設(shè)置一下日期的毫秒數(shù)即可磅崭,防止進位
calendar.set(Calendar.MILLISECOND,0);