sql >> Database >  >> RDS >> Mysql

Tijdsverschil berekenen in MySQL maar rekening houden met gebeurtenissen

Gebruik voor elke start een query om de volgende eindtijd te krijgen. Bereken dan gewoon het verschil. De logica is ongeveer als volgt:

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

Dit veronderstelt dat uw datum- en tijdkolommen zijn opgeslagen met de juiste databasetypes (date en time ). Als je ze als iets anders opslaat, moet je de logica onnodig ingewikkeld maken om ze naar de interne formaten te converteren.



  1. Probleem met winkelaccessor:kan geen oude, reeds opgeslagen json-object geserialiseerde (hash) waarden in mysql-database in Rails 4 lezen

  2. Waarschuwing:mysqli_stmt::bind_param():het aantal variabelen komt niet overeen met het aantal parameters in de voorbereide instructie

  3. Rijwaarden samenvoegen in een CSV (ook bekend als GROUP_CONCAT voor SQL Server)

  4. MySQL LIKE-operator gebruiken voor velden die zijn gecodeerd in JSON