我有一个带有列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等之间的时差是多少。我知道我需要在表上进行自我连接,但是我在子句上没有得到正确的选择。

最佳答案

要实现您的要求,请尝试以下操作(从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

关于mysql - 计算两行之间的时间差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7937288/

10-11 20:20