Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Obliczanie różnicy czasu w MySQL z uwzględnieniem zdarzeń

Dla każdego początku użyj zapytania, aby uzyskać następny czas zakończenia. Następnie po prostu oblicz różnicę. Logika wygląda mniej więcej tak:

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

Zakłada się, że kolumny daty i godziny są przechowywane przy użyciu odpowiednich typów baz danych (date i time ). Jeśli przechowujesz je jako coś innego, będziesz musiał niepotrzebnie komplikować logikę, aby przekonwertować je na formaty wewnętrzne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybieranie losowego wpisu z bazy danych MySQL

  2. Tworzenie i używanie procedur składowanych MySQL — samouczek

  3. Ustaw wartość domyślną, jeśli zostanie przekazany pusty ciąg

  4. GRUPA MySQL Według liczby

  5. Chcesz ograniczyć wartość pola MySQL do określonego zakresu (wartości dziesiętne)