2017-02-28 42 views
0

我有一個表,其中time_fromtime_to在特定對象的unix時間戳中。時間是入住率或使用量,因此時間可以從下午1點到下午3點。MySQL PHP每小時佔用

我想要做的是製作一個圖表(準備好了JS),類似於Google在Google地圖中顯示商店營業時間「最喜歡的時間」的方式,即。你可以看到哪些時間有更多/更少的訪問者。這應該反映自數據庫啓動以來某些對象名稱的所有條目。

我不確定從哪裏開始,因爲我不認爲平均是正確的做法。我預計如果一個入口的佔用時間是13:30到15:30,那麼每個小時13,14,15就會得到+1。如果下一個入口是12:00至13:40,則12和13會得到+1。

在這個簡短的例子中,圖表將顯示12,14,15與1單位,13與2單位。

雖然還有一個問題出現。我如何決定一個小時計爲一次?如果時間是15點05分到16點05分,那麼給16分+1分是有意義的。這需要某種時間的分鐘計算來決定該小時是否「被佔用」。

如何從數據庫中查詢以獲取正確的單位?

+0

將你的時間作爲UNIX時間戳存儲在MySQL中肯定會遇到麻煩。這些不會整潔地轉換成一天的特定時間。如果小時/分鐘對於您的查詢來說本質上很重要,這聽起來就像是這樣,您可能希望將其作爲一個單獨的字段進行索引,以便「GROUP BY」操作並不昂貴。 – tadman

+0

你到目前爲止嘗試過什麼? – wogsland

+0

@tadman不幸的是,這不是我的決定,但我使用'date('d.m.Y H:i',$ time)'成功完成其他事情。 – Fid

回答

0

我猜你正在處理的錶行意

X是在店裏從2017年2月28日12:252017年2月28日14:10

和類似的信息。你有關於如何評分你的小時數的決定。以下是一些替代方案,您可以從中選擇一個。

  1. 如果每個樣本的時間間隔覆蓋小時的頂部,那麼您給那個小時+1。對於我的示例,13:00和14:00的小時數將爲+1。這可能是最容易實現的。它不會計算在13:10到達並在13:20離開的人。

  2. 如果每個樣本中的時間間隔與從小時前半小時到半小時後之間的時間間隔完全相交,則該時間間隔爲+1。這就是每個人都有的

這很容易和相當便宜(意見相反的規定),以UNIX時間戳轉換爲日期/時間戳:

SELECT FROM_UNIXTIME(1488310427) 

接近得到一個時間,當我寫了這一點。

SELECT HOUR(FROM_UNIXTIME(1488310427)); 

獲取發生該時間戳的那一天的小時。這些操作符合MySQL連接的當前時區設置。例如,如果您想要在大西洋標準時間的一天中的某個小時,請執行此操作。

SET time_zone='America/Halifax'; 
SELECT HOUR(FROM_UNIXTIME(1488310427));