计算收到的802.11数据包的时间

时间:2014-02-25 13:20:57

标签: mysql sql database-design relational-database data-modeling

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

我想计算从每个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 

我正在尝试按device_idtime订购,但我不知道如何询问每台设备的最后一次。此外,设备每天可以测量不止一次。换句话说,设备可以多次进入嗅探场。因此,我需要区分它是第一次进入现场还是第二次进入。

谢谢

1 个答案:

答案 0 :(得分: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