如何显示从当天开始的过去7天内的所有日期。例如:如果今天是10/3/2018。我希望输出
10/3/2018
9/3/2018
8/3/2018
7/3/2018
6/3/2018
5/3/2018
4/3/2018

现在最重要的是我的桌子没有所有日期的条目。所以,如果我使用之间或类似的东西。它只会显示表中可用的日期。
我实际上是在尝试获取过去7天的数据,如果当天没有任何数据可用,则应该为零或空白。
编辑1:
Select curdate()
union Select date_sub(Curdate(),interval 1 day)
union Select date_sub(Curdate(),interval 2 day)
union Select date_sub(Curdate(),interval 3 day)
union Select date_sub(Curdate(),interval 4 day)
union Select date_sub(Curdate(),interval 5 day)
union Select date_sub(Curdate(),interval 6 day)
from detail

现在这将返回我想要的所有先前日期,但我仍然无法使用group
子句正确where
。这样日期就会返回当天下达的订单数量,如果没有找到则返回0。
SELECT count(id) from detail where status in(3,7)
。
这是原始查询
答案 0 :(得分:2)
您无需在任何表格中添加任何日期
您可以使用UNION获取最近七天
Select if(created_at,created_at,0) as past_seven_days from (
Select curdate() as past_seven_days
union
Select date_sub(Curdate(),interval 1 day)
union
Select date_sub(Curdate(),interval 2 day)
union
Select date_sub(Curdate(),interval 3 day)
union
Select date_sub(Curdate(),interval 4 day)
union
Select date_sub(Curdate(),interval 5 day)
union
Select date_sub(Curdate(),interval 6 day)
union
Select date_sub(Curdate(),interval 7 day) )as p
left join url as u on p.past_seven_days = u.created_at
答案 1 :(得分:1)
一种解决方案是创建一个包含所需日期的日历表。然后,您可以将其加入您的数据,以获得您的目标