似乎我的间隙检测只是拾取我设置为时间差的任何内容,并根据它在每个间隔进行。
所以这里是我的数据结构和我所追求的解释:
我有一个这样设置的数据库:
(Schema Name)
Historical
-CID int UQ AI NN
-ID Int PK
-Location Varchar(255)
-Status Varchar(255)
-Time datetime
我的数据看起来像这样(示例 5 行用于选定的 ID)
433275 | 97 | MyLocation | OK | 2013-08-20 13:05:54
433275 | 97 | MyLocation | OK | 2013-08-20 13:00:54
433275 | 97 | MyLocation | OK | 2013-08-20 12:25:54
433275 | 97 | MyLocation | OK | 2013-08-20 12:20:54
433275 | 97 | MyLocation | OK | 2013-08-20 12:15:54
在上述情况下,您会注意到我缺少 ID 97 的 12:25:54 -> 13:00 的数据。我正在尝试编写一份报告,告诉我:停机时间的开始,停机时间的持续时间,和停机时间结束(我一直在 php 中通过将 timediff 添加到 Time 来处理)
这是我现在的代码(php -> mysql)(不工作):
select *from (
SELECT
y.*,
TIMESTAMPDIFF(MINUTE, @prevDT, `Time`) AS timedifference,
@prevDT := `Time`
FROM ddHistorical y,
(SELECT @prevDT:=(SELECT MIN(`Time`) FROM ddHistorical)) vars
Where ID = '". mysql_real_escape_string($ID)."'
HAVING timedifference > 16
) s
order by Time desc
Limit 25";