2011-10-29 10 views
16

私は列StartDateを持つテーブルを持っている、私は2つの連続したレコードの時間差を計算したい。2行の時間差を計算する

ありがとうございました。マークバイヤーズ@とヤヒア@


、私はrequestIdよう要求テーブルを持って、

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 

を開始日と私は2 & 3、requestid 1 & 2との間の時間差であるかを知りたい、3 & 4など。私はテーブルに自己結合する必要があることを知っているが、私は節で正しい得ていない。あなたは、以下の(OPから編集後のUPDATEを)しようと求めているものを達成するために

+4

どのフィールドに従うか?あなたが望むものの例を挙げることができますか? –

答えて

21

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 
3

を使用することができます受け入れ答えが正しいですが、数の差を与える。 : - : 例として、私は、次の2つのタイムスタンプした場合の時間差を得るために、以下のように、スクリプトを変更することで4815. これは単に5011の違いは、196のように与えられる

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

です

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