计算两行之间的时间差

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

谢谢。


@ 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 

我想知道什么是要求1&2,2&3,3&4之间的时间差等等。 我知道我需要自我join桌上,但我没有得到正确的条款。

要实现你所要求的,请尝试以下内容(从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 

被接受的答案是正确的,但给出了数字的区别。 举个例子,如果我有以下2个时间戳:

 2014-06-09 09:48:15 2014-06-09 09:50:11 

差别是196.这只是5011 – 4815.为了获得时差,您可以修改脚本如下:

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