0

我有一个路由器,它正在嗅探数据包并将设备ID,信号强度和时间戳存储在MySQL数据库中。这些都存储在一个表中,其中包含以下字段:device_id,signal_strength和time_stamp。每条记录代表一个接收的数据包 由于我从多个来源接收数据包,数据库中的记录以随机顺序排列。计算接收到的802.11数据包的时间

我想计算从每个MAC地址的第一个数据包到我收到的最后一个数据包的时间。所以我不会知道设备的测量时间。这是我被卡住了。我不知道如何计算或查询这个。也许我的数据库设计不是最优的?

编辑:例如数据

record_id device_id date  time signal_strength 
32   2   2014-02-20 10:52:52 -9 
33   2   2014-02-20 10:52:52 -14 
34   2   2014-02-20 10:52:53 -9 
35   2   2014-02-20 10:52:53 -10 
36   2   2014-02-20 10:52:53 -10 
37   7   2014-02-20 10:52:53 -53 
38   2   2014-02-20 10:52:53 -15 
39   2   2014-02-20 10:52:53 -9 
40   2   2014-02-20 10:52:53 -9 
41   2   2014-02-20 10:52:53 -10 
42   2   2014-02-20 10:52:54 -13 
43   2   2014-02-20 10:52:54 -9 
44   7   2014-02-20 10:52:54 -60 
45   2   2014-02-20 10:52:54 -10 
46   2   2014-02-20 10:52:54 -9 
47   2   2014-02-20 10:52:54 -9 
48   2   2014-02-20 10:52:54 -10 
49   2   2014-02-20 10:52:55 -13 
50   7   2014-02-20 10:52:55 -56 
51   2   2014-02-20 10:52:55 -15 
52   7   2014-02-20 10:52:55 -58 
53   2   2014-02-20 10:52:55 -26 
54   2   2014-02-20 10:52:55 -14 
55   2   2014-02-20 10:52:56 -13 
56   2   2014-02-20 10:52:56 -12 
57   2   2014-02-20 10:52:56 -9 
58   2   2014-02-20 10:52:56 -11 
59   2   2014-02-20 10:52:56 -13 
60   7   2014-02-20 10:52:56 -55 
61   2   2014-02-20 10:52:57 -14 

我想ORDER BY device_idtime,但我不知道如何提出每台设备的最后一次。此外,设备每天可以测量多次。换句话说,设备可以多次进入嗅探场。所以我需要区分是第一次进入现场还是第二次。

谢谢

+0

您能否提供一些数据示例?我猜你可以计算每个MAC地址的Max(time_stamp)和Min(time_stamp)之间的SQL时间,但是如果你不能通过某些字段或值或任何东西来区分数据包,则会出现问题。 – DNac

+0

感谢您的评论。我编辑了我的帖子。 – timmy

回答

1

要使用开始变得开始和结束时间,你可以使用MINMAX像这样

SELECT Device_id 
,MIN(concat(date,' ',time)) as StartTime 
,MAX(concat(date,' ',time)) as EndTime 
,MIN(TIMESTAMP(date,time)) as StartTime2 
,MAX(TIMESTAMP(date,time)) as EndTime2 
From MyTable 
Group by Device_ID 

比你需要的是计算开始和结束时间之间的差异。为此,您可以使用TIMEDIFF函数。关于所有这些功能的完整文档http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestamp

+0

谢谢你,这是有帮助的 – timmy