【问题标题】:Calculate time of received 802.11 packets计算收到802.11数据包的时间
【发布时间】:2014-03-27 18:03:22
【问题描述】:

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

谢谢

【问题讨论】:

  • 您能提供一些数据示例吗?我想你可以计算每个 MAC 地址的 Max(time_stamp) 和 Min(time_stamp) 之间的 SQL 时间,但是如果你不能通过某些字段或值或任何东西来区分数据包,就会出现问题..
  • 感谢您的评论。我编辑了我的帖子。

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多