简体   繁体   中英

MySQL, how to get time difference between rows

I'm trying to get time difference between rows. I tried this but it's not working.

SELECT id,locationDate,
  TIMESTAMPDIFF(SECOND,
    (SELECT MAX(locationDate) FROM location WHERE locationDate< t.locationDate),
    created_at
  ) as secdiff
FROM location t where tagCode = 24414 AND locationDate >= '2017-05-10 16:00:01' and locationDate <= '2017-05-10 16:59:59';

What should I do for calculating time difference between rows ?

You can reach the sample structure and data from sqlfiddle

I am guessing you just want a correlated subquery:

select l.id, l.locationDate,
       TIMESTAMPDIFF(SECOND,
                     (SELECT MAX(l2.locationDate)
                      FROM location l2
                      WHERE l2.locationDate < l.locationDate AND
                            l2.tagCode = l.tagCode
                     ),
                     locationDate
                    ) as secdiff
from location l
where l.tagCode = 24414 and
      l.locationDate > '2017-05-10 16:00:00' and
      l.locationDate < '2017-05-10 17:00:00';

I modified the date/time constants to be a bit more reasonable (from my perspective). If you really care about one second before or after a time, then you can use your original formulation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM