java的LocalDateTime存入MySQL中datetime被四舍五入,导致查询异常
异常描述:
1.mysql数据库,插入记录,对象create_time(LocalDateTime)字段是手动赋值的,recordVo.setCreateTime(LocalDateTime.now());
2.查询时的条件,时间字段 赋值如下,有时候能查出来,有时候不行。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
String formattedDateTime = bookingOrderPo.getCreateTime().format(formatter);
param.put("date", formattedDateTime);
3.排查发现
数据库中该条记录的create_time是 21:53:04秒,但是查询时间是21:51:03秒,
排查结果就是LocalDateTime获取的时间,比如 2024-04-09T21:53:03.945,入库会被四舍五入,存成2024-04-09T21:53:04,但是查询时formatter 只根据秒来查。
4.解决措施
对象赋值时先统一格式化,再入库,后面查询就没有问题了。