2016-03-24 17 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 

IソートSTARTTIMEによってクエリから抜粋されています:実際に

+------------------------------------------------------------+ 
| 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 6827のID 6826からの時間間隔を取得するには、ここで私が現在使用しているクエリがあります1つではありません。 ID 6825はID 6827と整列しています。

どのようにすればこの作業をするか考えてください。私はいつもの間にあるかどうかをテストし、そのような記録を作成するために、毎日の毎秒を叩くことについて考えましたが、それはちょうど残忍です。

+2

私たちはデバッグできるようにあなたの質問にあなたの質問を追加してください。あなたのロジックにRecording_Idを考慮していないようです。 –

+0

そうかもしれないが、私はまだ重複する時間がある状況を見ている。たとえば、recording_idで最初にソートされるサブクエリを作成すると、後でそれをどのように照合するのですか?私はまだ対処するために重複を持っています。 – WillemB

+0

利用可能なすべてのセグメント内に見つからない 'stoptime'値を見つけようとしてください: – 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 

:-)これは、別のレコードの時間枠内で開始し、これカバレッジ・ギャップの終わりを示していなかったあなたが持っているすべてのレコードを識別します。

私は見つけるために、これを調整するために、学生にそれを残します:

  • すべてのカバレッジの開始時間を。
  • すべてのカバレッジの終了時刻。
  • ギャップの開始時間と終了時間。
関連する問題