Кажется, что мое обнаружение пробелов просто подбирает все, что я задал, как временное различие, и делаю это каждый интервал на основе этого.
Итак, вот объяснение моей структуры данных и того, что мне нужно:
У меня есть база данных, которая настроена следующим образом:
(Schema Name) Historical -CID int UQ AI NN -ID Int PK -Location Varchar(255) -Status Varchar(255) -Time datetime
Мои данные выглядят примерно так (пример 5 строк для выбранного ID)
433275 | 97 | MyLocation | OK | 2013-08-20 13:05:54 433275 | 97 | MyLocation | OK | 2013-08-20 13:00:54 433275 | 97 | MyLocation | OK | 2013-08-20 12:25:54 433275 | 97 | MyLocation | OK | 2013-08-20 12:20:54 433275 | 97 | MyLocation | OK | 2013-08-20 12:15:54
В приведенном выше примере вы заметите, что мне не хватает данных с 12:25:54 -> 13:00 для ID 97. Я пытаюсь написать отчет, который расскажет мне: Начало простоя, Продолжительность DownTime, и End of Downtime (который я обрабатывал в php, добавляя timediff к Time)
Вот мой код (php -> mysql) (нерабочий), как он сейчас выглядит:
select *from ( SELECT y.*, TIMESTAMPDIFF(MINUTE, @prevDT, `Time`) AS timedifference, @prevDT := `Time` FROM ddHistorical y, (SELECT @prevDT:=(SELECT MIN(`Time`) FROM ddHistorical)) vars Where ID = '". mysql_real_escape_string($ID)."' HAVING timedifference > 16 ) s order by Time desc Limit 25";