mysql的datetime类型不是时间戳,所以精度只到秒,java.util.Date是一个毫秒数时间,所以java.util.Date到mysql datetime,必然会面临精度丢失。 如果场景比较严格,这会导致问题,比如,一个方法里刚刚insert了一条数据,提交事务之后,通过sql查询却查不到。
在mysql-connector-java版本<=5.1.22是,会直接丢弃毫秒数,但是在之后的版本,会进行四舍五入。可以使用sql进行测试重现这个问题,比如 UPDATE table_A SET START = '2019-01-04 00:00:00.599' WHERE id = 11; UPDATE table_A SET START = '2019-01-04 00:00:00.499' WHERE id = 11;