प्रत्येक प्रारंभ के लिए, अगली समाप्ति समय प्राप्त करने के लिए किसी क्वेरी का उपयोग करें। फिर, बस अंतर की गणना करें। तर्क कुछ इस प्रकार है:
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
यह मानता है कि आपके दिनांक और समय कॉलम उचित डेटाबेस प्रकारों (date
.) का उपयोग करके संग्रहीत किए जाते हैं और time
) यदि आप उन्हें किसी अन्य चीज़ के रूप में संग्रहीत कर रहे हैं, तो आपको उन्हें आंतरिक स्वरूपों में बदलने के लिए तर्क को अनावश्यक रूप से जटिल करना होगा।