2017-09-25 56 views
0

我有一看,雖然有過的問題類似的沒有一個安靜的幫助對我的最終目標,使IM希望有人能提供一些線索,我工作了時差看見,最後出現的MySQL

我有一張桌子,我想確定一個值第一次進來和最後一次看到的時間差,然而我的問題是價值在一天中幾次出現在桌子上,例如

| beacon | location | mac | date | time  | 
|--------|----------|-----|------|----------| 
| 53  | blue  | mac | date | 10:28:37 | 
| 53  | blue  | mac | date | 10:28:48 | 
| 53  | blue  | mac | date | 10:28:53 | 
| 53  | blue  | mac | date | 14:02:12 | 
| 53  | blue  | mac | date | 14:03:37 | 
| 53  | blue  | mac | date | 14:03:58 | 
實質

它的很多更多的數據我想工作了1看到圖A和最後出現圖B

最大時間差大概會半小時之間的時間差,所以我不得不做

的想法
select*,timediff() from table where time > now() - interval 30 minute 

,但不知道在timeDiff測量

或其他想法,我不得不用什麼變量是做鏈接的顏色(位置)數量增加的開始時間和時停止鏈接,例如數不再拿起顏色添加結束時間

Mysql Table

感謝您的閱讀,希望有人能幫助哈哈

編輯:謝謝大家的建議,我會給他們一個嘗試對不起,我在我的問題中,我的數據庫並不十分清楚,我的數據庫是要知道在一張桌子上看到一個燈塔(數字)有多長,然而我的問題是,同一個燈塔在一天中幾次出現在表格中,所以它的情況是烽火臺已經看到日誌時間的燈塔不再在半小時內停止記錄時間停止記錄時間我希望更有意義謝謝

+1

你的問題不是很清楚你想從數據庫中獲取什麼。我的意思是,你可能想要獲取每個日期和每個燈塔的數據。所以基本上你應該在這兩個領域使用'GROUP BY'。 –

回答

0

您可以使用下面的查詢爲例,可能需要一些小的修改。

SELECT *, 
MAX(`time`) AS `maxtime`, 
MIN(`time`) AS `mintime`, 
TIMEDIFF(MAX(`time`),MIN(`time`)) AS `timediff` 
FROM `test` GROUP BY `beacon`,`date` 
HAVING TIMEDIFF(`maxtime`,`mintime`)>=0 
ORDER BY `timediff` DESC; 

您可以在SQL-Fiddle上查看結果。

+0

這可以治療謝謝你是否有一種方法,我可以限制它的時間間隔,如 SELECT *, MAX(時間)AS最大時間, MIN(時間)AS最小時間, TIMEDIFF(MAX(時間),MIN(時間))AS timeDiff測量 FROM OSM其中時間>現在() - 間隔20分鐘由MAC 組HAVING TIMEDIFF(MAXTIME,mintime)> = 0 ORDER BY timeDiff測量DESC; –

+0

@ AvalonParkes-barton我很高興它爲你提供了幫助,因爲你需要的只是使用MYSQL日期和時間函數中的'CURRENT_TIME()'和'SUBTIME()'。看看我根據您的數據爲您準備的修訂後的SQL小提琴http://sqlfiddle.com/#!9/4db46/16。在較低的兩行中,您將找到想要實現的語法。 –

+0

完美的作品謝謝你:) –

1

您可以使用minmax函數來確定timediff的值。

例如:

select *, timediff(max(time),min(time)) from table where time > now() - interval 30 minute 

它可能更有意義,爲您包括一些分組,以及。例如,如果您想查找每個位置的timediff,則可以按該列進行分組。我已經擴大查詢,以使其更具可讀性:

select 
    location, 
    timediff(max(time), min(time)) 
from 
    table 
where 
    time > now() - interval 30 minute 
group by 
    location 
+1

難道你不需要在任何情況下由燈塔組合? – ulferts

+0

@ulferts我對理解這個問題有點困難,所以我可能錯過了一些東西。你能澄清爲什麼它應該按照燈塔分組嗎?一般而言,最小值和最大值將根據查詢結果確定;所以如果沒有分組,就像在第一個查詢中那樣,那麼每個行將具有與在查詢結果中返回的絕對最早和最近時間相同的timediff值。 – RToyo

+0

有同樣的問題,理解這個問題,所以我不是100%肯定,但作爲列被稱爲'燈塔'和OP想知道'價值第一次進來,當它的最後一次看到',我認爲這是有道理的,在那一欄。 OP可能知道... – ulferts