查找记录中的时间差距

时间:2016-03-24 16:57:29

标签: sql sqlite

您有安全摄像头以连续模式录制。它将记录的记录保存到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.

任何想法如何使这项工作。我考虑过每天敲击每一秒以测试它是否介于任何时间之间并创造一种记录,但这只是野蛮的。

1 个答案:

答案 0 :(得分: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

这将识别您在另一条记录的时间范围内没有开始的任何记录,从而代表覆盖范围的结束。

我会留给学生调整这个以找到:

  • 所有报道的开始时间。
  • 所有报道的结束时间。
  • 差距的开始和结束时间。