Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server T-SQL-每分钟检查日期时间数据中的间隔_Sql Server_Tsql_Datetime - Fatal编程技术网

Sql server T-SQL-每分钟检查日期时间数据中的间隔

Sql server T-SQL-每分钟检查日期时间数据中的间隔,sql-server,tsql,datetime,Sql Server,Tsql,Datetime,我们有一个每分钟记录系统数据的数据库 +---------+-------------------------+ | Id | EntryDate | +---------+-------------------------+ | 8093562 | 2019-05-17 15:01:25.000 | | 8093563 | 2019-05-17 15:02:25.000 | | 8093564 | 2019-05-17 15:0

我们有一个每分钟记录系统数据的数据库

+---------+-------------------------+  
| Id      | EntryDate               |     
+---------+-------------------------+   
| 8093562 | 2019-05-17 15:01:25.000 |  
| 8093563 | 2019-05-17 15:02:25.000 |  
| 8093564 | 2019-05-17 15:03:25.000 |  
| 8093565 | 2019-05-17 15:04:25.000 |  
| 8093566 | 2019-05-17 15:05:25.000 |  
| 8093568 | 2019-05-17 15:07:25.000 |  
| 8093569 | 2019-05-17 15:08:25.000 |  
| 8093780 | 2019-05-17 15:09:25.000 |  
| 8093781 | 2019-05-17 15:10:25.000 |  
+---------+-------------------------+   
我正在尝试进行一个查询,以确定会议记录之间是否有任何间隔。例如,在上述数据中,15:06的数据缺失

无法理解如何在SQL查询中执行此操作。

使用
LEAD()
CASE
,您可以获得预期的结果:

SELECT ResultDate FROM (
    SELECT CASE WHEN (DATEDIFF(MINUTE, LEAD(EntryDate, 1) OVER(ORDER BY EntryDate),EntryDate) < -1) THEN DATEADD(MINUTE, +1, EntryDate) END AS ResultDate
    FROM TableName
) Q WHERE ResultDate IS NOT NULL

那么您的预期输出是什么<代码>2019-05-17 15:06:25.000或
Id
?2019-05-17 15:06:25.000感谢该查询对上述数据非常有效,但是如果数据库缺少多分钟,它只返回第一分钟@AnsarMuhammad。这回答了您提出的问题。我建议你接受这个答案,并提出一个新的问题,关于多个丢失的分钟数,这个问题更清楚。@AnsarMuhammad感谢你接受这个答案。如果您发布的新任务有多分钟的间隔问题,我可以发布该问题的答案。@AnsarMuhammad请查找for DB缺少多分钟的问题。
DECLARE  @TestTable TABLE (Id INT, EntryDate DATETIME);

INSERT INTO @TestTable (Id, EntryDate) VALUES  
(8093562, '2019-05-17 15:01:25.000'),
(8093563, '2019-05-17 15:02:25.000'),
(8093564, '2019-05-17 15:03:25.000'),
(8093565, '2019-05-17 15:04:25.000'),
(8093566, '2019-05-17 15:05:25.000'),
(8093568, '2019-05-17 15:07:25.000'),
(8093569, '2019-05-17 15:08:25.000'),
(8093780, '2019-05-17 15:09:25.000'),
(8093781, '2019-05-17 15:10:25.000');

SELECT ResultDate FROM (
    SELECT CASE WHEN (DATEDIFF(MINUTE, LEAD(EntryDate, 1) OVER(ORDER BY EntryDate),EntryDate) < -1) THEN DATEADD(MINUTE, +1, EntryDate) END AS ResultDate
    FROM @TestTable
) Q WHERE ResultDate IS NOT NULL
ResultDate
-----------------------
2019-05-17 15:06:25.000