我有一个查询,可以计算数据库中每天的“Xp”差异,这一切都可以正常工作,但是它从午夜到午夜进行分组,我想要做的是凌晨 3 点到凌晨 3 点的分组。
然而,我认为我可能遇到的另一个问题是,我的查询可能并不总是在凌晨 3 点精确地记录行,因为它必须运行一个巨大的查询并根据用户配置文件从另一个网站检索数据,所以它应该在凌晨 3 点之后、凌晨 4 点之前获取所有数据,因此它有足够的时间来获取所有行。
我当前的mysql是:
SELECT FROM_UNIXTIME(date, '%Y%m%d') AS YYYYMMDD, MAX(xp)-MIN(xp) AS xp_gain
FROM skills
WHERE userID = '$checkID'
AND skill = '$skill'
AND date >= '$date'
GROUP BY YYYYMMDD
ORDER BY date ASC
最佳答案
处理此问题的最佳方法是添加(如果可以的话)另一列,该列只是日期(而不是日期时间),并让该字段从一天到下一天凌晨 3 点滚动(您可以通过减去执行 INSERT 时距当前时间 3 小时)。
这给您带来了一些好处,尤其是对于大量行:
- 按 DATE 查询或分组比按范围查询或分组要快得多 日期时间
- 它将始终在凌晨 3 点整秒查询行,
无论查询需要多长时间。
关于php - MYSQL 按日期分组 + 3 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579920/