2016-09-02 20 views
0

我有一個mysql表,其中每個記錄有startDateTimefinishDateTime。我希望能夠返回每個月的總時間。查找日期範圍內的所有數據,然後計算每個月總計

我當前的查詢是這樣的:

$dateRange = "BETWEEN '$startDate' AND '$finishDate'"; 

$sql = 
"SELECT 
    TIMESTAMPDIFF(MINUTE, StartDateTime, FinishDateTime) As Duration, 
    StartDateTime As Start, FinishDateTime As Finish 
FROM Entries 
WHERE StartDateTime $dateRange AND FinishDateTime $dateRange"; 

表項

| StartDateTime  | FinishDateTime | 
| 2016-08-18 10:00:00 | 2016-08-18 11:00:00 | 
| 2016-08-18 12:00:00 | 2016-08-18 14:00:00 | 
| 2016-08-31 17:00:00 | 2016-09-01 09:00:00 | 

Desired Output 
| Month    | Duration  | 
| Aug     | 10    | 
| Sept    | 9    | 

將返回每條記錄的持續時間,但不是總每月。我需要在此查詢中添加或更改以獲取所需數據?每一個條目開始,並在同月完成

+2

可能的複製http://stackoverflow.com/questions/11616693/sql-query-for-a-total-amount-between-date-range) – hlh3406

+2

發佈當前輸出,而不是期望的輸出以及db架構和可能的sqlfiddle http://sqlfiddle.com/ –

+0

請編輯該問題並提供樣本數據和期望的結果。 –

回答

1

據稱嘗試以下操作:

$sql = 
    "SELECT 
     SUM(TIMESTAMPDIFF(HOUR, StartDateTime, FinishDateTime)) As Duration 
    FROM Entries 
    WHERE 
     YEAR(StartDateTime) = YEAR(FinishDateTime) 
     AND MONTH(StartDateTime) = MONTH(FinishDateTime) 
     AND StartDateTime $dateRange 
     AND FinishDateTime $dateRange 
    GROUP BY MONTH(StartDateTime)"; 
的[SQL查詢的日期範圍之間的總金額(
+0

你會如何滿足從一個月末到下一個月初的記錄? –

+0

您可以檢查StartDateTime和FinishDateTime的月份和年份是否相同。檢查更新的答案。 –

+0

我沒有看到任何更新的答案 –

相關問題