一尘不染

计算两行之间的时间差

mysql

我有一个带有StartDate列的表,我想计算两个连续记录之间的时间差。

谢谢。


@ Mark Byers和@ Yahia,我将请求表作为requestId,startdate

requestId    startdate               
1            2011-10-16 13:15:56
2            2011-10-16 13:15:59
3            2011-10-16 13:15:59
4            2011-10-16 13:16:02
5            2011-10-16 13:18:07

我想知道requestid 1和2、2和3、3和4等之间的时差是多少。我知道我需要在表上进行自我连接,但是我在子句上没有得到正确的支持。


阅读 337

收藏
2020-05-17

共1个答案

一尘不染

要实现您的要求,请尝试以下操作(从OP编辑后进行更新):

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A INNER JOIN MyTable B ON B.requestid = (A.requestid + 1)
ORDER BY A.requestid ASC

如果requestid不是连续的,则可以使用

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A CROSS JOIN MyTable B
WHERE B.requestid IN (SELECT MIN (C.requestid) FROM MyTable C WHERE C.requestid > A.requestid)
ORDER BY A.requestid ASC
2020-05-17