2017-01-19 100 views
-1

我有一個表,其中有兩列,即startTime和endTime(都是DateTime數據類型)有另一列'持續時間',計算這兩個之間的差異。我想在6月10日至6月20日之間的特定日期之間檢索持續時間。問題是我有很多行相同的日期和幾個日期之間甚至不存在甚至存在。我需要繪製指定範圍的圖表。因此,當某一天沒有條目時,必須將零附加到輸出,並且必須將相似日的值加在一起並作爲單個值返回。所以,輸出行應該等於指定的天數。 Click here for Example Thanx提前。SQL查詢檢索兩個日期之間的字段列表

+0

的例子添加到您的問題表,人們可能不會點擊一個鏈接,以獲取更多信息 – xkcd149

+0

感謝您響應。縮進存在問題,因此我選擇了此選項。 – Venky

回答

0

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

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 
相關問題