Cześć,

mam tabele


  1. CREATE TABLE table2
  2. (
  3. id varchar(20),
  4. start datetime,
  5. stop datetime
  6. );
  7.  
  8. INSERT INTO table2 (id, start, stop) VALUES
  9. ( 1, '2014-10-13 20:24:49', '2014-10-15 13:56:08'),
  10. ( 1, '2014-10-15 13:57:52', '2014-10-15 14:02:29'),
  11. ( 1, '2014-10-20 19:41:23', '2014-10-21 10:34:34'),
  12. ( 1, '2014-10-21 10:37:33', '2014-10-22 10:54:24'),
  13. ( 1, '2014-10-22 09:15:33', '2014-10-22 12:12:11')


Tyle napisałem samemu

  1. SELECT q.id, q.start, q.stop, TIME_TO_SEC(TIMEDIFF(q.stop, q.start)) sec FROM table2 q WHERE q.id = '1'


Teraz by wystarczyło zsumować kolumnę SEC ale zauważ że w bazie są dwa wiersze które na siebie nachodzą

  1. ( 1, '2014-10-21 10:37:33', '2014-10-22 10:54:24'),
  2. ( 1, '2014-10-22 09:15:33', '2014-10-22 12:12:11')


i dla nich sumaryczny czas wyjdzie błędny gdyż powinien być wyliczony tylko raz dla start = 2014-10-21 10:37:33 i stop = 2014-10-22 12:12:11 dla tych dwóch rekordów a nie dla każdego z osobna.
Oczywiście czasy rekordów które na siebie nie nachodzą także powinny być zliczone..

mam nadzieję że opisałęm to w miarę prosto...