我在一个带有随机条目的 mysql 表中有一个 DATETIME 字段。我想选择对象组,并在有四个小时的间隔时将它们分开。理想情况下,我可以返回数组(或子组?)中每个组内的所有 ID。
这似乎超出了我的 SQL 技能。
有什么有趣的解决方案吗?
您可以使用 MySQLDATE_FORMAT
子句。
例子
SELECT CAST(DATE_FORMAT(date,'%Y-%m-%d %k:00:00') AS DATETIME) hour
FROM table
WHERE date = CURRENT_DATE - INTERVAL 4 HOUR
GROUP BY CAST(DATE_FORMAT(date,'%Y-%m-%d %k:00:00') AS DATETIME)
SQL 旨在对数据执行集合操作,而您所要求的涉及顺序处理。
所以,我建议按顺序处理它,而不是试图扭曲 SQL 来尝试这样做。我相信你有两个基本的选择:
在存储过程中从表中选择数据,使用游标处理结果。
从您选择的外部独立语言(Java、C#、Python、PHP ......无论您喜欢什么)执行一个 select 语句,并在那里对数据进行适当的分组。