sql >> Databáze >  >> RDS >> Mysql

Výpočet časového rozdílu v MySQL, ale zohlednění událostí

Pro každý začátek použijte dotaz k získání dalšího času ukončení. Pak už jen spočítejte rozdíl. Logika je asi tato:

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

To předpokládá, že vaše sloupce data a času jsou uloženy pomocí správných typů databáze (date a time ). Pokud je ukládáte jako něco jiného, ​​budete muset zbytečně komplikovat logiku jejich převodu do interních formátů.



  1. Přechod z MySQL na PostgreSQL - tipy, triky a problémy?

  2. Len() vs datalength() v SQL Server 2005

  3. Jak zkontrolovat, zda uživatelské jméno již existuje s PHP/MYSQL

  4. Ignorování roku v SQL Query s rozsahem dat