mysql中使用BETWEEN AND时查不到右边时间范围的数据

在按月查找19年10月之前近一年的数据时,使用BETWEEN AND的sql语句如下:

SELECT CONCAT(year(updateDate),DATE_FORMAT(updateDate,'%m')) as label , SUM(cpuNum) as value from sc_project_resource WHERE  updateDate BETWEEN DATE_SUB('2019-10-01',INTERVAL 365 DAY) AND '2019-10-01' group by DATE_FORMAT(updateDate,'%m')  order by   updateDate  ASC;

结果如下,发现查询结果中却并不包含10月份的数据 

在项目中debug后发现,传入的查询条件默认是加了时分秒,且为00:00:00,

但数据库中存储的该字段是date类型的,所以并没有查询到2019-10-01的数据。

解决方法:将时间区间的左边界改为2019-10-02,

SELECT CONCAT(year(updateDate),DATE_FORMAT(updateDate,'%m')) as label , SUM(cpuNum) as value from sc_project_resource WHERE updateDate BETWEEN DATE_SUB('2019-10-02',INTERVAL 365 DAY) AND '2019-10-01' group by DATE_FORMAT(updateDate,'%m') ORDER BY   updateDate  ASC;

即可查询到近一年的数据了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章