開始ごとに、クエリを使用して次の終了時刻を取得します。次に、差を計算します。ロジックは次のようなものです:
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
)。それらを別のものとして保存する場合は、それらを内部形式に変換するためのロジックを不必要に複雑にする必要があります。