2017-07-31 66 views
0

我有一個監控系統。每5秒檢索一次用戶的位置。但是,我只想顯示範圍內和每15秒出現的記錄。也許我會選擇一個開始日期和結束日期來顯示這些值....我試圖使這個過濾器,我沒有得到它。如何按時間間隔返回一些*數據?

我有以下見下表:

+------------+-------------------+ 
|  ID  |  date_  | 
+------------+-------------------+ 
|  1  |2017-07-10 10:11:10| 
+------------+-------------------+ 
|  2  |2017-07-10 10:11:15| 
+------------+-------------------+ 
|  3  |2017-07-10 10:11:20| 
+------------+-------------------+ 
|  4  |2017-07-10 10:11:25| 
+------------+-------------------+ 
|  5  |2017-07-10 10:11:30| 
+------------+-------------------+ 
|  6  |2017-07-10 10:11:35| 
+------------+-------------------+ 
|  7  |2017-07-10 10:11:40| 
+------------+-------------------+ 

我想一個*查詢*返回我的15秒的差別只有數據。對於上面這個例子中,我將返回以下行:

+------------+-------------------+ 
|  ID  |  date_  | 
+------------+-------------------+ 
|  1  |2017-07-10 10:11:10| 
+------------+-------------------+ 
|  4  |2017-07-10 10:11:25| 
+------------+-------------------+ 
|  7  |2017-07-10 10:11:40| 
+------------+-------------------+ 

我想忽略基於一個小時的一些行,只返回一些數據,例如,15秒。這基於最後登記的日期,例如:2017-07-10 10:11:40

如何按時間間隔返回一些*數據?

Obs .:對不起英文。

+1

你是如何確定的15周第二個窗口開始時?根據提供的信息,僅包含'2'和'5'的結果集以及'3'和'6'的結果集也是完全有效的。這總是從'ID = 1'開始還是你指定一個時間? – Siyual

+0

@Siyual我想從最後記錄的日期開始。例如:'2017-07-10 10:11:10' – Viana

+0

間隔時間僅限於同一天的小時和分鐘?對於'2017-07-10 10:11:40'的情況,如果存在日期爲'2017-07-10 10:12:40'的條目應該輸出? – lucianov88

回答

0

如何使用timestampdiff()自加入?

select t2.* 
from yourTable t1 join yourTable t2 on timestampdiff(second t1.date_, t2.date_) =15 

由於您想要的結果包含在第一行,你可能要聯合查詢由上述情況,加上

select * 
from yourTable 
where date_ = (select min(date_ from yourTable) 
+0

這隻適用於第一項。從第二起,它不再起作用。 – Viana