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