For hver start skal du bruge en forespørgsel for at få det næste sluttidspunkt. Så skal du bare beregne forskellen. Logikken er noget som denne:
select t.*, timestampdiff(second, dt, next_dt)
from (select t.*, addtime(t.date, t.time) as dt,
(select addtime(t2.date, t2.time)
from table t2
where addtime(t2.date, t2.time) > addtime(t.date, t.time) and
status = 'end'
order by addtime(t2.date, t2.time) desc
limit 1
) as next_dt
from table t
where status = 'start'
) t
Dette forudsætter, at dine dato- og tidskolonner er gemt ved hjælp af de korrekte databasetyper (date
og time
). Hvis du gemmer dem som noget andet, bliver du unødigt nødt til at komplicere logikken for at konvertere dem til de interne formater.