PHP Mysql получить разрыв между временным диапазоном

Я вроде как новенький здесь в 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

Пожалуйста, если кто-то знает ответ, это будет большая помощь. Спасибо

1

Решение

Вы можете использовать следующий запрос:

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

Демо здесь

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]