Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeitunterschied in MySQL berechnen, aber Ereignisse berücksichtigen

Verwenden Sie für jeden Start eine Abfrage, um die nächste Endzeit abzurufen. Dann berechnen Sie einfach die Differenz. Die Logik ist in etwa so:

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

Dies setzt voraus, dass Ihre Datums- und Zeitspalten mit den richtigen Datenbanktypen gespeichert werden (date und time ). Wenn Sie sie als etwas anderes speichern, müssen Sie die Logik unnötig verkomplizieren, um sie in die internen Formate zu konvertieren.