我現在有如何檢查一天中的每一分鐘在MySQL數據庫中是否有一行?
SELECT *, COUNT(*) as `numrows`
FROM `data`
WHERE `datetime`
BETWEEN '2014-11-04 00:00:00' AND '2014-11-04 23:59:59'
AND `project_id` = 1
GROUP BY
DATE(`datetime`),
HOUR(`datetime`),
MINUTE(`datetime`)
現在,這將返回所有行,與一些有重複這樣會numRows行是2。但是,我想驗證,如果每分鐘有一列,這樣我就可以驗證測量仍然是正確的未來
現在,我已經想過通過循環的結果,將每個返回日期時間到數組:
while($s = $select->fetch_assoc()) {
$availableTimes[] = $s['datetime'];
}
然後,通過充滿的紀要數組循環一天,但這是非常密集的我猜想,特別是當你有500,1000,5000甚至30000個ID可以通過時。什麼是最好的方式去做這件事?
我會將它加入日曆表中,該日曆表中將包含所有分鐘。這樣,當行丟失時,您也可以顯示0個計數。 – 2014-11-06 13:53:03
計算有多少個不同的記錄,並在兩個日期時間值之間做一個時間差異。這會給你兩個日期時間之間的總分鐘數,計數會給你多少記錄。如果兩個值不同,那麼你在某個地方缺少分鐘。 – 2014-11-06 14:07:10