2012-07-06 50 views
0

我需要第1行和第2行之間的時間差。然後是第2行和第3行。 有沒有可以做到這一點的查詢?我的同事已經認爲這是不可能的。 非常感謝您的幫助提前。如何獲得SQL中每個後續行之間的時間差?

2012-03-08 15:08:02.260 
2012-03-08 15:08:07.180 
2012-03-08 15:15:09.220 
2012-03-08 15:15:09.330 
2012-03-08 15:15:09.457 
2012-03-23 13:06:19.913 
2012-03-23 13:06:20.980 
2012-03-23 13:06:21.440 
2012-03-23 13:06:21.480 
2012-03-23 13:06:21.550 
2012-03-23 13:06:21.567 

回答

1

您對顆粒度並不清楚,但您可以根據需要調整日期部分。你也應該告訴你的同事關於互聯網。 :-)

;WITH x AS 
(
    SELECT col, rn = ROW_NUMBER() OVER (ORDER BY col) 
    FROM dbo.table 
) 
SELECT x.col, 
    s = DATEDIFF(SECOND, x2.col, x.col), 
    m = DATEDIFF(MINUTE, x2.col, x.col), 
    d = DATEDIFF(DAY, x2.col, x.col) 
FROM x LEFT OUTER JOIN x AS x2 
ON x.rn = x2.rn + 1; 

結果:

col      s  m  d 
----------------------- ------- ------- ---- 
2012-03-08 15:08:02.260 NULL  NULL  NULL 
2012-03-08 15:08:07.180 5  0  0 
2012-03-08 15:15:09.220 422  7  0 
2012-03-08 15:15:09.330 0  0  0 
2012-03-08 15:15:09.457 0  0  0 
2012-03-23 13:06:19.913 1288270 21471 15 
2012-03-23 13:06:20.980 1  0  0 
2012-03-23 13:06:21.440 1  0  0 
2012-03-23 13:06:21.480 0  0  0 
2012-03-23 13:06:21.550 0  0  0 
2012-03-23 13:06:21.567 0  0  0 
相關問題