汇总MySQL中给定日期的总时间段

时间:2013-08-02 05:17:50

标签: php mysql sql laravel laravel-4

我需要MySQL查询以下内容。我有一个时间表如下:

`active_periods`
+----+--------+---------+------------+------------+
| Id |   Day  | All Day | Start Time |  End Time  |
+----+--------+---------+------------+------------+
| 1  | Friday |    0    |  18:00:00  |  22:00:00  |
 ---- -------- --------- ------------ ------------
| 2  | Friday |    0    |  06:00:00  |  13:00:00  |
 ---- -------- --------- ------------ ------------
 INT  VARCHAR  TINYINT   TIME         TIME

使用MySQL查询,我需要能够计算这些时间段,并在星期五之日的这些给定时间段之间返回 15分钟块的数量 。所以从上表我会得到 44 15分钟的答案。

提前致谢。

3 个答案:

答案 0 :(得分:8)

你在找这样的东西吗?

SELECT SUM(TIME_TO_SEC(TIMEDIFF(end_time, start_time)) / 60 / 15) total
  FROM active_periods
 WHERE day = 'Friday'

输出:

| TOTAL |
---------
|    44 |

这是 SQLFiddle 演示

答案 1 :(得分:2)

这将返回Day和15分钟块的数量(作为浮动)。

SELECT `Day`, SUM(TIME_TO_SEC(TIMEDIFF(`End Time`, `Start Time`)) / 60 / 15) AS `Periods` 
FROM `active_periods`
GROUP BY `Day`

例如:

| Day    | Periods     |
------------------------
| Friday | 44.00000000 |

答案 2 :(得分:0)

select sum( end_time - start_time ) / 900 from active_periods where day= 'Friday'