从mysql

时间:2018-03-10 07:22:45

标签: php mysql sql date web

如何显示从当天开始的过去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)

这是原始查询

2 个答案:

答案 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 

Ouput

答案 1 :(得分:1)

一种解决方案是创建一个包含所需日期的日历表。然后,您可以将其加入您的数据,以获得您的目标