2017-07-31 60 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