当前使用版本(必填,否则不予处理)

3.5.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

更新到3.5.3.1问题依然存在

使用LocalDateTime.of(LocalDate.now(), LocalTime.MAX)作为时间查询条件时,在sql层面会变为第二天0点, 但是在 LocalDateTime.now().withHour(23).withMinute(59).withSecond(59) 这样去使用就是正常的。 测试了直接使用 mybatis 是没有任何问题的

重现步骤(如果有就写完整)

使用Wrappers去构建查询条件 LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX); 比如 Wrappers.lambdaQuery().le(XXX::getCreateTime, endTime)

报错信息

比如 我想要的是 create_time <= '2023-02-25 23:59:59' ,结果在sql日志中看到的是 create_time <= '2023-02-26 00:00:00'

Comment From: miemieYaho

mp又不会改你的参数

Comment From: xiekong

但是我在debug的时候看到传入的参数是对的,打印出来的sql就变了

Comment From: xiekong

然后我直接使用mybatis,不使用mp,打印出来的sql值就是对的

Comment From: gogym

这是因为mysql的数据类型为[datetime] 比如当创建时间是2020-04-25 22:30:50.771,毫秒被四舍五入为2020-04-25 22:30:51

解决:将mysql时间类型改为datetime(3)