我有一个包含网络数据的数据库,每行对应一个数据包/流。我想在固定的时间间隔内读取自上而下的数据,一次说15分钟的数据并对其进行一些取证处理。
所以我的问题与MySQL有关:
无论如何,我可以保持跟踪直到我读取数据的位置?
有人可以通过读取包含SYN数据包时间戳的第一列来帮助我查询“读取最后15分钟数据,然后接下来15分钟数据,依此类推”的SQL查询。
任何帮助将不胜感激 谢谢
答案 0 :(得分:1)
你需要保留一个变量来存储你离开的地方。无论您将它存储在您的应用程序中,还是存储在MySQL中的客户端var中,都取决于您,但使用服务器端变量会是这样的:
select @previously_finished_at := now()
...对检索到的任何数据进行分析......
select @new_end_point := date_add(@previously_finished_at, interval 15 minutes)
select the,fields,you,want
from
table
where packet_timestamp between @previous_finished_at and @new_end_point;
select @previous_finished_at := @new_end_point
因此,如果您是在2011-01-01 00:00:00
开始执行此操作,那么您的第一个查询将具有
...
where packet_timestamp between '2011-01-01 00:00:00' and '2011-01-01 00:15:00'
然后,在你的下一次运行中,将会来
...
where packet_timestamp between '2011-01-01 00:15:00' and '2011-01-01 00:30:00'
等等。