2016-03-24 34 views
0

嗨有一個安全攝像機,記錄在連續模式。它將記錄的記錄保存到一個sqlite數據庫文件中,記錄到幾個不同的文件中。我試圖在錄音中找到時間差距。問題是某些記錄事件重疊,所以我不能簡單地找到開始時間和停止時間之間的時間差。這是我目前使用的查詢:查找時間記錄差距

select b.id, datetime(b.starttime, "-8 Hour") as starttime, datetime(b.stoptime, "-8 Hour") as endtime, b.recording_id 
from blocks b, recordings a 
where b.recording_id = a.id and a.recording_type_id = 1 order by b.starttime asc 

下面是從查詢的摘錄,我排序開始時間:

+------------------------------------------------------------+ 
| id starttime   endtime    recording_id | 
+------------------------------------------------------------+ 
| ---- ------------------- ------------------- ------------ | 
| 6824 2016-03-22 12:32:48 2016-03-22 12:38:08 389   | 
| 6825 2016-03-22 12:38:08 2016-03-22 12:43:28 389   | 
| 6826 2016-03-22 12:39:00 2016-03-22 12:41:10 418   | 
| 6827 2016-03-22 12:43:28 2016-03-22 12:48:48 389   | 
| 6828 2016-03-22 12:48:48 2016-03-22 12:54:08 389   | 
| 6829 2016-03-22 12:54:08 2016-03-22 12:59:28 389   | 
+------------------------------------------------------------+ 

我從ID 6826的時間間隔,以ID 6827,其實當沒有一個。 ID 6825排隊ID 6827.

任何想法如何使這項工作。我考慮每天每秒鐘敲擊以測試它是否處於任何時間之間,並創建一條記錄,但這只是殘酷的。

+2

在您的問題中添加您的查詢,以便我們進行調試。這聽起來像你沒有在你的邏輯中考慮Recording_Id。 –

+0

也許是這樣的情況,但我仍然看到一種情況,那裏會有重疊的時間。如果我作爲例子創建一個子查詢,首先按recording_id排序,我以後如何整理它。我仍然有重疊處理。 – WillemB

+0

嘗試查找在所有可用分段中找不到的「停止時間」值: – Stavr00

回答

0

這是一個有趣的問題。 :-)

Select a.starTime as 'Coverage Gap Closed' 
    From TableName a 
    Inner Join TableName b 
    On a.startTime between b.startTime and b.endTime 
     And a.PrimaryKey != b.PrimaryKey 

這將標識您擁有的在另一個記錄的時間範圍內未啓動的任何記錄,因此表示覆蓋差距的結束。

我將它留給學生調整此找到:

  • 全部覆蓋的開始時間。
  • 全部覆蓋的結束時間。
  • 差距的開始和結束時間。