以下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