我有一个表格,其中包含如下所示的日期时间行。
ID | DateTime
1 | 12:00
2 | 12:02
3 | 12:03
4 | 12:04
5 | 12:05
6 | 12:10
我想识别那些行之间有 5 分钟“间隔”的行(例如,第 5 行和第 6 行)。
我知道我们需要使用DATEDIFF
,但是我怎样才能只得到那些彼此连续的行呢?
最佳答案
SELECT ID
FROM (
SELECT ID, [DateTime],
DATEDIFF(mi, LAG([DateTime]) OVER (ORDER BY ID), [DateTime]) AS prev_diff,
DATEDIFF(mi, [DateTime], LEAD([DateTime]) OVER (ORDER BY ID)) AS next_diff
FROM mytable) AS t
WHERE prev_diff >= 5 OR next_diff >= 5
输出:
ID
==
5
6
注意:上面的查询假设订单是由ID
字段定义的。您可以轻松地将此字段替换为指定表格中顺序的任何其他字段。
关于sql - 计算两个连续行之间的日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37270224/