假设每行中的开始日期和结束日期只会在时间分量上有所不同。 另外,假设您没有任何其他列出日期的表,并且您需要一个动态表来列出给定范围之间的所有日期。 您可以执行以下操作。
select list_of_dates.date, ifnull(sum(your_table.duration),0)
from your_table
right join
(SELECT DATE(ADDDATE('2016-06-20', INTERVAL @i:[email protected]+1 DAY)) AS date
FROM your_table,
(select @i:=-1) local
HAVING
@i < DATEDIFF('2016-06-25', '2016-06-20')) list_of_dates
on list_of_dates.date = date(your_table.start_date)
group by list_of_dates.date
如果您有相关的存储日历变得越来越容易
select calendar_table.date, ifnull(sum(your_table.duration),0)
from your_table
right join
calendar_table
on calendar_table.date = date(your_table.start_date)
where calendar_table.date >= '2016-06-20' and calendar_table.date <= '2016-06-25'
group by calendar_table.date
来源
2017-01-19 05:35:24
stk
的例子添加到您的问题表,人们可能不会点击一个链接,以获取更多信息 – xkcd149
感谢您响应。缩进存在问题,因此我选择了此选项。 – Venky