项目过程中遇到一个问题,做一个记录。
需求是需要按照时间筛选询价单,起初没有多想,就按照常规的思路去写。
<if test="betweenBeginDay != null and betweenEndDay != null">
and e.created_at BETWEEN #{betweenBeginDay} AND #{betweenEndDay}
但是这样会有一个问题,就是如果你传入的时间是2019-09-05,mysql会将时间匹配成2019-09-05-00:00:00。这样的话,我想查2019-09-04到2019-09-05这个时间段内的时间就会发现,9月5日这天是数据是查不到的。再比如2019-09-05到2019-09-05的数据是没有的。
因此在写查询语句的时候,需要把技术日期加一。
<if test="betweenBeginDay != null and betweenEndDay != null">
and e.created_at BETWEEN #{betweenBeginDay} AND date_add(#{betweenEndDay}, INTERVAL 1 day)
这样就可以正确查出结果。