MySQL(用的8.0.16版)中列的数据类型是 datetime,成功插入记录后,根据插入的时间有时候查不到对应的记录。
插入的SQL语句如下,看时间的变化。
==> Preparing: INSERT INTO tb_contest_conclusion ( id,user_id,create_time,finish_time ) VALUES( ?,?,?,? ) ==> Parameters: null, 1(Long), 2020-10-03 14:36:26.499(Timestamp), 2020-10-03 14:36:26.739(Timestamp) <== Updates: 1数据库中插入的记录如下。
MySQL中当插入的时间的毫秒数大于等于500时,实际保存到数据库的时候就会自动增加一秒,有点类似四舍五入的感觉。
对症下药:插入时间前,将时间的毫秒值统一设置为0即可。使用JDK中的日历类Calendar来实现。
这个功能要多次用到,写个工具类吧。
package util; import java.util.Calendar; import java.util.Date; /** * @Description 精确的时间工具类 * @Author DongPo */ public class PreciseTimeUtil { /** * 设置时间的毫秒值为0 * * @param date * @return */ public static Date getPreciseTime(Date date) { // 日历对象 Calendar c = Calendar.getInstance(); // 设置时间 c.setTime(date); // 设置毫秒值为0 c.set(Calendar.MILLISECOND, 0); return c.getTime(); } }