以下MySQL查詢提供的記錄有時是:08:00:00, 09:00:00, 12:00:00, 15:00:00 etc
(可按3整除,如group by所指定的),但我希望記錄時間08:00:00, 11:00:00, 14:00:00, 17:00:00 etc.
,即從我給定的開始時間開始的時間間隔。我怎樣才能做到這一點?MySql查詢兩個日期時間範圍之間的每個時間間隔的記錄
SELECT *
FROM `data_10082016`
WHERE CREATED_AT BETWEEN "2016-08-11 08:00:00" AND "2016-08-15 08:00:00"
GROUP BY DATE(DATETIME) , FLOOR(HOUR(DATETIME) /3)
ORDER BY `data_10082016`.`id` ASC
此問題中的查詢不保證返回組中的任何特定行;返回的值將來自組中的某個(不確定)行。請注意,此問題中的查詢依賴於GROUP BY的MySQL擴展。其他的RDBMS會拋出一個關於「不在SELECT列表中而不在GROUP BY中」的錯誤。 (通過在sql_mode變量中包含ONLY_FULL_GROUP_BY,我們可以使MySQL以更標準的方式運行。)要從特定行中獲取值,需要WHERE子句中的附加謂詞或SELECT列表中的某些巧妙表達式。 – spencer7593
Thanls @ spencer7593,我現在正在學習MySQL ...聚合像??實際上,我需要像12:00:25,12:01:23,11:59:42 ...這樣的最接近小時的行... – nik
SUM(),MAX(),MIN(),AVG()一組行以返回單個值。通過GROUP BY操作,可能會將多行摺疊爲單行。對GROUP BY的MySQL擴展將允許在SELECT列表中使用非聚合表達式(例如,普通列)。 MySQL將從組中的某一行返回一個值。無法保證價值最低或最高,或者來自最早,最近,最新的一排。這就是我們說價值是「不確定」的意思 – spencer7593