php - MYSQL 按日期分组 + 3 小时

标签 php mysql sql group-by

我有一个查询,可以计算数据库中每天的“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/

相关文章:

php - "UPDATE WHERE NOT LIKE? "

php - 将许多服务器端信息传递给 JavaScript 的最佳做法是什么?

php - 更改 PHP/SQL 输出中不同 DIV 的背景颜色

mysql 按名称查询组

mysql - 如何要求数据库在 24 小时后自动重新分配表中的某个值?

mysql - 具有多个 OR 的查询结果不按 OR 的顺序排列

mysql - 根据另一个字段中的 2 个相同数据对字段进行分组连接

javascript - 如何从多个元素复制属性值并将每个元素复制到不同的元素?

PHP代码没有被执行,但是代码显示在浏览器源代码中

java - 如何在 Java 中使用带问号的 strftime 函数