sql >> Databasteknik >  >> RDS >> Mysql

Beräknar tidsskillnad i MySQL men tar hänsyn till händelser

För varje start, använd en fråga för att få nästa sluttid. Sedan är det bara att räkna ut skillnaden. Logiken är ungefär så här:

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

Detta förutsätter att dina datum- och tidskolumner lagras med rätt databastyper (date och time ). Om du lagrar dem som något annat måste du i onödan komplicera logiken för att konvertera dem till de interna formaten.



  1. sql-fråga för att få raderade poster

  2. Kör Oracle Client i 32-bitarsläge på en 64-bitars maskin

  3. slqlalchemy UniqueConstraint VS Index(unique=True)

  4. go-mysql:autentiseringsplugin stöds inte vid anslutning från go app-behållare till mysql-behållare