假設每行中的開始日期和結束日期只會在時間分量上有所不同。 另外,假設您沒有任何其他列出日期的表,並且您需要一個動態表來列出給定範圍之間的所有日期。 您可以執行以下操作。
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