我有一台嗅探数据包的路由器,并将设备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进行订购,但我不知道如何询问每个设备的最后一次时间。此外,每天可以对设备进行多次测量。换句话说,设备可以多次进入嗅探字段。因此,我需要区分是在字段中第一次输入还是第二次输入。

谢谢

最佳答案

首先,您可以使用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

关于mysql - 计算收到的802.11数据包的时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22015489/

10-15 17:12
查看更多