MYSQL集团按日期+3小时

时间:2013-12-14 05:13:59

标签: 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

1 个答案:

答案 0 :(得分:1)

处理此问题的最佳方法是添加(如果可以的话)另一个只是DATE(而不是DATETIME)的列,并在凌晨3点将该字段从一天翻转到下一天(您可以通过减去从执行INSERT的当前时间开始3小时)。

这会带来一些好处,特别是对于大量行:

  • 按日期查询或分组的速度要快得多 DATETIME
  • 它将始终在凌晨3点准确查询行,
    无论查询需要多长时间。