【问题标题】:MYSQL Group By date + 3 hoursMYSQL 按日期分组 + 3 小时
【发布时间】:2013-12-14 05:13:58
【问题描述】:

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

【问题讨论】:

    标签: php mysql sql group-by


    【解决方案1】:

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

    这给您带来了一些好处,尤其是在有大量行的情况下:

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

    【讨论】:

      猜你喜欢
      • 2017-04-14
      • 1970-01-01
      • 2011-01-16
      • 2016-09-13
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 2011-03-23
      相关资源
      最近更新 更多