我是 stackoverflow 的新手。无论如何这是我的问题,希望有人能帮助我解决这个问题。 我在 mysql 中有一个表,见下文
Start Time End Time Date
9:00 10:00 2016-02-26
9:00 10:00 2016-02-25
11:00 12:00 2016-02-25
12:00 13:00 2016-02-25
13:00 14:00 2016-02-25
15:00 16:00 2016-02-25
我想得到的是那些时间与特定日期之间的差距。请参阅下面我想要的输出:
Start Time End Time Date
10:00 11:00 2016-02-25
14:00 15:00 2016-02-25
如果有人知道答案,那将是一个很大的帮助。谢谢
最佳答案
您可以使用以下查询:
SELECT gap_start, gap_end
FROM (
SELECT (SELECT EndTime
FROM mytable AS t2
WHERE t2.EndTime < t1.StartTime
ORDER BY t2.EndTime DESC LIMIT 1) AS gap_start,
StartTime AS gap_end
FROM mytable AS t1) AS t
WHERE gap_start IS NOT NULL
所使用的相关子查询将获取紧接在当前记录之前的记录的 StartTime
。这里假设连续记录之间总是有一个间隙。
编辑:
为了处理Date
字段的添加,可以像下面这样修改查询:
SELECT gap_start, gap_end, `Date`
FROM (
SELECT (SELECT EndTime
FROM mytable AS t2
WHERE t2.`Date` <= t1.`Date` AND t2.EndTime <= t1.StartTime
ORDER BY t2.`Date` DESC, t2.EndTime DESC LIMIT 1) AS gap_start,
StartTime AS gap_end,
`Date`
FROM mytable AS t1) AS t
WHERE gap_start IS NOT NULL AND gap_start < gap_end
关于PHP Mysql获取时间范围之间的差距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35620051/