在按月查找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;
即可查詢到近一年的數據了