Mysql
 sql >> Base de données >  >> RDS >> Mysql

Calcul du décalage horaire dans MySQL mais en tenant compte des événements

Pour chaque démarrage, utilisez une requête pour obtenir l'heure de fin suivante. Ensuite, il suffit de calculer la différence. La logique ressemble à ceci :

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

Cela suppose que vos colonnes de date et d'heure sont stockées à l'aide des types de base de données appropriés (date et time ). Si vous les stockez comme autre chose, vous devrez compliquer inutilement la logique pour les convertir aux formats internes.