mysql时间筛选

项目过程中遇到一个问题,做一个记录。
需求是需要按照时间筛选询价单,起初没有多想,就按照常规的思路去写。

<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)

这样就可以正确查出结果。

    原文作者:hushucheng
    原文地址: https://segmentfault.com/a/1190000020301750
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞