背景:數據庫中某個業務表產生的數據日期不連續的,比如出庫表,本月5號和27號可能都沒有出庫記錄。前端報表組件要求傳入連續的日期以便渲染數據
需求:返回指定日期時間段內的每天的出庫量,如果當天沒有出庫記錄,則當日出庫量記為零
方法:
一、難點分析
在數據庫層面根據出庫記錄創建日期進行分組,並對組內的出庫量進行求和,即為當日的出庫量。
問題在於如果某天沒有出庫記錄則會產生日期遺漏問題。
難點在於如何獲取指定時間段內的每一天的日期,獲取后可以左關聯查詢每天的出庫量。
二、查詢指定時間段內每一天日期的方法(startDay:起始日期 endDay:結束日期)
SELECT date_add( date_sub(#{startDay},interval 1 day), INTERVAL ( cast( help_topic_id AS signed INTEGER ) + 1 ) day ) day FROM mysql.help_topic WHERE help_topic_id < DATEDIFF(#{endDay},date_sub(#{startDay},interval 1 day)) ORDER BY help_topic_id
三、查詢2020年3月的日期列表