2016-10-20 20 views
0

こんにちはこのタイムスタンプのトランザクション列の時間差を計算する必要があります。形式は次のとおりです.DATEDIFF関数を使用することはできません。ご協力いただきありがとうございます。日付と時刻の差を計算するSQL Server 2012のクエリ

Txtimestamp 
2016-01-05 12:16:51.000 
2016-01-05 12:16:51.000 
2016-01-18 12:24:16.000 
2016-01-18 12:24:16.000 
2016-01-20 08:15:32.000 
2016-01-20 08:15:32.000 
2016-01-20 12:24:29.000 
2016-01-20 12:24:29.000 
2016-01-29 12:18:11.000 
2016-01-29 12:18:11.000 
2016-02-01 12:16:43.000 
2016-02-01 12:16:43.000 
+2

何と何の間に時間差がありますか? –

+0

リストの最初の値と2番目の値の間のように続きます。との違いを表示 – Charls

答えて

0

私はこれを念頭に置いていましたが、再びゴードンの答えほど鮮明ではありません。私はパフォーマンスの違いがどうなるか分かりません。おそらくこれは2つのサブクエリを実行する必要があるためです。

SELECT tA.txtimestamp, tB.txtimestamp, DATEDIFF(second, tA.txtimestamp, tB.txtimestamp) AS diff 
FROM (SELECT row_num = ROW_NUMBER() OVER (ORDER BY txtimestamp), txtimestamp 
     FROM your_table) AS tA 
     INNER JOIN 
     (SELECT row_num = ROW_NUMBER() OVER (ORDER BY txtimestamp), txtimestamp 
     FROM your_table) AS tB ON tA.row_num = tB.row_num - 1 

確かに別の可能性があります。あなたは、 "+"に参加条件の " - "を変更する必要があります。

3

このようなものが欲しいですか?

select datediff(second, lag(txtimestamp) over (order by txtimestamp), txtimestamp) as diff_in_seconds 
from t; 
+0

ありがとう、私はこの構造が動作するかもしれないと信じて – Charls

+0

うわー、それはいいです。私はテーブルに行番号の列を追加し、行番号から1を引いて自己結合します。これははるかに鮮明です。共有してくれてありがとう。 –

+0

パット、あなたの最後のコメントのコードを共有してください、私も同様にしたいと思います。ありがとう – Charls

関連する問題