前几日开发了一个近几日的需求,当时想的是:那不就是当前日期减去数据库日期等于几吗,比如今日就是0,近1天就是今天昨天,然后完成接口后测了一下大概内容就没去管它了,等前端对接完发现近3日和近7日都没问题,但是今日出现了问题,我拿着这个sql去数据库试了一下
select
xxx
from table
where
<if test="map.days!=null and map.days!='' ">
and datediff(current_date(),makedate) between 0 and #{map.days}
</if>
把参数带入到这个sql后,是正常显示的,没出问题,但是在mybatis中却出现了所有的内容,百思不得其解,最后觉得应该是mybatis的问题,前端让我用1试试,后面将这个sql改成了
select
xxx
from table
where
<if test="map.days!=null and map.days!='' ">
and datediff(current_date(),makedate)+1 between 1 and #{map.days}
</if>
一试居然好了,后面去查了一下原来0在mybatis中是不识别的,以后多加注意(ps:如果是近几日这种的最好还是让前端传日期,方便后期维护及使用索引)