2011-02-17 60 views
9

我可以嘗試通過PHP來做這件事,但我認爲它可以簡單地在mySQL中完成。我在mySQL中有多行,日期時間超過了幾個小時。我想在這幾個小時內返回每一分鐘的計數。在幾分鐘的時間範圍內獲取mySQL行多個小時

GROUP BY MINUTE(date)

給了我60行,但它並沒有給我計數01:00:00 - 一時01分00秒不同於02:00:00和2時00分01秒。

這怎麼辦?

+0

日期本身呢?你想將週日分鐘和週一分鐘分組在一起嗎? – 2011-02-17 03:04:38

回答

14

MySQL的分鐘功能是從字面上採取的分鐘數和分組。嘗試通過隨後,小時,分鐘分組:

GROUP BY HOUR(date), MINUTE(date) 
3

從MySQL存儲日期/時間作爲一個完整的數,除以100的數量會給你分鐘:

GROUP BY FLOOR(`data`/100) 

按數字分組更有效,然後按文本分組。

如果你一分希望,無論組日期:

GROUP BY FLOOR(`data`/100) % 10000 
+1

非常halpfull答案謝謝!:) 100010分鐘 10000 1小時 20000 2小時 – Smoke 2014-11-21 06:53:44

11

老問題的新的答案!

要GROUP BY分鐘,你可以簡單地說:

SELECT (unix_timestamp(`date`) - unix_timestamp(`date`)%60) groupTime, count(*) 
FROM yourTable 
# WHERE clause 
GROUP BY groupTime 

有了這個解決方案,你會用一個小時,一天的同一分鐘的日期時間一分鐘從未混合日期時間,...

此外,這是一個演變的解決方案,因爲通過將「60」更改爲另一個數字,您可以分組幾分鐘(120),一天(86400),...

+0

一個主側面效益該解決方案是,如果你存儲的時間戳,而不是日期,那麼你可以刪除UNIX_TIMESTAMP()部分,仍然以分鐘爲單位,例如 - 驚人的! – 2017-05-18 10:20:56

相關問題