sql >> Database teknologi >  >> RDS >> Mysql

Beregner tidsforskel i MySQL, men tager begivenheder i betragtning

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.



  1. mysql_connect() mislykkes med tom advarsel

  2. ELLER Operatørkortslutning i SQL Server

  3. Sådan vælger du poster fra sidste 24 timer ved hjælp af PostgreSQL

  4. Hjælp til PHP/MySQL-array har brug for