获取指定日期内的 日期条数(缺少的天数自动补0)
示例
SELECT t1.date_str, COALESCE(t2.date_total_count, 0) as date_total_count
FROM(
SELECT @cdate:= date_add(@cdate, interval - 1 day) as date_str FROM(SELECT @cdate:= date_add(CURDATE(), interval + 1 day) from web_reviews) tmp1 where @cdate>"2020-11-10"
) t1
LEFT JOIN(
SELECT date(o.created_at) as date_str, count(*) as date_total_count FROM mejosi_reviews as o WHERE o.created_at>"2020-11-10" GROUP BY date(o.created_at)
) t2
on t1.date_str = t2.date_str ORDER BY `t1`.`date_str` ASC
讲解
-
SELECT @cdate:= date_add(@cdate, interval - 1 day) as date_str FROM(SELECT @cdate:= date_add(CURDATE(), interval + 1 day) from web_reviews) tmp1 where @cdate>“2020-11-10”
这句是为了整理日期数据
这个里面引用了一个数据表(web_reviews)
没有获取数据的作用 只是需要保障条数足够撑起日期的天数 主要是为了填充日期使用
后面还有个时间 是 需要查询数据列表的初始时间
-
SELECT date(o.created_at) as date_str, count(*) as date_total_count FROM mejosi_reviews as o WHERE o.created_at>“2020-11-10” GROUP BY date(o.created_at)
这步没什么可说的 就是基础的分组