我有一个表,其中包含一个名为“created”的字段,它是一个日期时间字段。
假设 NOW() 是 2013-07-21 的午夜,所以 NOW() = 2013-07-21 23:59:59
现在假设我查询在 DATE_SUB(NOW(), INTERVAL 4 DAYS) AND NOW() 之间创建的所有记录
假设返回结果如下:
- 2013-07-18 08:00:00
- 2013-07-19 08:00:00
- 2013-07-20 08:00:00
- 2013-07-21 08:00:00
我想将我使用的时间间隔(4 天)的开始和结束日期时间添加到该结果集中,所以现在我有:
- 2013-07-18 00:00:00 (4 天前从现在())
- 2013-07-18 08:00:00
- 2013-07-19 08:00:00
- 2013-07-20 08:00:00
- 2013-07-21 08:00:00
- 2013-07-21 23:59:59 (现在())
现在我想要一个查询,它会给我这 6 个日期时间结果之间的平均小时数。
即 (8 + 24 + 24 + 24 + 24 + 16) / 6,平均为 20 小时。
我在堆栈上找到了这个
SELECT
TIME_TO_SEC(TIMEDIFF(end,start)) AS timediff
FROM
Sessions
GROUP BY
DATE(start)
这个查询的问题是我必须运行它 6 次,每次传递日期(在 PHP 循环中),然后添加所有结果和 / 6,然后 / 到 3600。
如何仅使用 mySQL 获得我想要的结果?
谢谢!
只是为了进一步澄清:
假设两件事。
用户将选择一个日期范围(在本例中为 7 月 21 日至 7 月 18 日)
其他用户正在使用不同的服务,每次使用该服务时都会生成所创建的记录。
第一个用户想知道第二个用户在所选日期范围内使用第二个服务的平均频率(以小时为单位)。
因此,它需要考虑 2013-07-18 00:00:00 和 2013-07-18 08:00:00 之间的时间(这 8 个小时很重要),最后的 16 个小时也是如此,因为用户在这些时间段内没有使用该服务。
基本上,我不仅想要 4 个初始创建记录之间的平均小时数,我认为(如果我错了,请纠正我)这就是 Gordon 的建议。