Satu pendekatan mungkin untuk subquery pertama dan memasangkan setiap catatan dengan catatan yang memiliki stempel waktu terdekat yang lebih besar. Kemudian, kueri itu, dan kembalikan semua catatan yang memiliki celah dengan ukuran yang memadai.
SELECT
DateTime AS GapStart,
NextDateTime AS GapEnd,
TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) AS SizeInSecond
FROM
(
SELECT DateTime, Value,
(SELECT MIN(DateTime) FROM #time t2
WHERE t2.DateTime > t1.DateTime) AS NextDateTime
FROM #time t1
) t
WHERE
TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) > 5; -- or whatever threshhold you want
TAMBAHKAN ke jawaban asli
Jika DateTime
selalu berkembang, peningkatan kecepatan dapat diperoleh dengan mengubah SELECT internal:
SELECT
DateTime AS GapStart,
NextDateTime AS GapEnd,
TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) AS SizeInSecond
FROM
(
SELECT DateTime, Value,
(SELECT DateTime FROM #time t2
WHERE t2.DateTime > t1.DateTime LIMIT 1) AS NextDateTime
FROM #time t1
) t
WHERE
TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) > 5;