Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Calculando a diferença de tempo no MySQL, mas levando os eventos em consideração


Para cada início, use uma consulta para obter o próximo horário de término. Depois é só calcular a diferença. A lógica é algo assim:
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

Isso pressupõe que suas colunas de data e hora sejam armazenadas usando os tipos de banco de dados apropriados (date e time ). Se você os estiver armazenando como outra coisa, terá que complicar desnecessariamente a lógica para convertê-los para os formatos internos.