【发布时间】:2013-12-25 21:05:12
【问题描述】:
我有一个具有start_date 和end_date 时间戳的表,这些行包含来自半径记帐表的数据。
用户登录后不久,将插入一行带有start_date 时间戳的行,一旦用户注销,end_date 将填充一个更新。
这里有几行:
ID | start_date | end_date
22 2013-11-19 12:00:22 2013-11-20 14:20:22 (*)
23 2013-11-19 12:02:22 2013-11-20 15:20:22 (*)
23 2013-11-19 17:02:22 2013-11-20 20:20:22
24 2013-11-20 12:06:22 2013-11-20 15:20:22 *
25 2013-11-20 12:40:22 2013-11-20 15:23:22 *
26 2013-11-20 12:50:22 2013-11-20 17:23:22 *
27 2013-11-20 16:56:22 2013-11-20 17:29:22
28 2013-11-20 17:58:22 2013-11-20 20:24:22
所以在这种情况下,对于 2013-11-19,并发用户的最大数量是 2(标有 (*) )(他们之间开始和结束重叠的时间),对于 2013-11-20,它是 3(标有带 *)
我正在尝试编写一个 SQL 查询来获取一天中最多并发用户的数量(基于开始和结束日期),所以简短的结果将是 2013-08-12,在线最多的时间是同一时间是xx号。
我可以在 PHP 中通过逐行分析来做到这一点,但我想将其保留为 SQL 查询。
【问题讨论】:
-
查看
GROUP BY和DAY(date)以提取日期的日部分,COUNT(*)可以显示出现次数。在不知道表结构的情况下(对我来说)不可能给出完整的查询。 -
查看 StackOverflow 上的这篇文章:stackoverflow.com/questions/1764881/… 一些想法可能会派上用场。
标签: mysql