-2

我需要以下 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 查询,我需要能够计算这些时间段并返回Friday当天这些给定时间段之间15 分钟块的数量。所以从上表中我会得到44 个15 分钟块的答案。

提前致谢。

4

3 回答 3

8

你在寻找这样的东西吗?

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

输出:

| 总计 |
---------
| 44 |

这是SQLFiddle演示

于 2013-08-02T05:24:58.700 回答
2

这将返回日期和 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 |
于 2013-08-02T05:32:57.983 回答
0
select sum( end_time - start_time ) / 900 from active_periods where day= 'Friday'
于 2013-08-02T05:34:24.757 回答