我需要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分钟的答案。
提前致谢。
答案 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'