Mysql
 sql >> база данни >  >> RDS >> Mysql

Изчисляване на времева разлика в MySQL, но отчитане на събития

За всяко начало използвайте заявка, за да получите следващия краен час. След това просто изчислете разликата. Логиката е нещо подобно:

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

Това предполага, че вашите колони за дата и час се съхраняват с помощта на правилните типове бази данни (date и time ). Ако ги съхранявате като нещо друго, ще трябва ненужно да усложнявате логиката, за да ги преобразувате във вътрешните формати.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Фатална грешка:Не може да се използва обект от тип stdClass като масив в

  2. MySQL търсене за игнориране на тирета

  3. MySQL:как да премахнете множество таблици с помощта на една заявка?

  4. Искам да вмъкна данни в mysql база данни с помощта на PDO на PHP. Но данните не се въвеждат

  5. VB.NET:Инициализаторът на типа за 'MySql.Data.MySqlClient.Replication.ReplicationManager' хвърли изключение