[英]Find all data in date range then calculate total per month
我有一个mysql表,其中每个记录都有一个startDateTime
和finishDateTime
。 我希望能够返回每个月的总时间。
我当前的查询是这样的:
$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 |
它将返回每个记录的持续时间,但不返回每个月的总计。 我需要在此查询中添加或更改什么才能获取所需的数据?
假设每个条目都在同一月开始和结束,请尝试以下操作:
$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)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.