我有一台嗅探数据包的路由器,并将设备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_id
和time
进行订购,但我不知道如何询问每个设备的最后一次时间。此外,每天可以对设备进行多次测量。换句话说,设备可以多次进入嗅探字段。因此,我需要区分是在字段中第一次输入还是第二次输入。谢谢
最佳答案
首先,您可以使用MIN
和MAX
来获取开始时间和结束时间,如下所示
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/