En fremgangsmåde kan være at først underforespørge og parre hver post med posten med det nærmeste større tidsstempel. Forespørg derefter på det, og returner alle poster med et mellemrum af tilstrækkelig størrelse.
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
FØJ TIL til originalt svar
Hvis DateTime
er altid i vækst, kan hastighedsforbedring opnås ved at ændre den interne SELECT:
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;