[总结]mysql 插入dateTime 2020.01.13 23:59:59 最终值是2020.01.14 00:00:00
问题描述
今天发现一个奇怪的现象,在笔者的某个业务场景中,需要存储一个时间,对于时间的存储,我们一般期望开始时间是2020.01.13 00:00:00 结束时间我们期望是2020.01.13 23:59:59
但是在实际存储却变成了2020.01.14 00:00:00
于是经过一番debug,终于定位到问题。
排查分析
生成指定日期最大时间点代码
/**
* 获得某天最大时间 2017-10-15 23:59:59.999
* @param date
* @return
*/
public static Date getEndTimeOfDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());;
LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
endOfDay.withNano(0);
return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
}
insert语句
|
注意日志中:
2020-01-13 00:00:00.0(Timestamp), 2020-01-13 23:59:59.999(Timestamp)
实际存储到mysql后变为
修复后
解决问题
|