0

我有一张这样的桌子:

id    | created_on
1      2013-09-03 20:05:09
2      2013-09-05 17:03:13
...

如何编写查询以返回从日期 X 到日期 Y 以 7 天为间隔创建的记录计数的结果?

所以结果看起来像这样:

count | created_on
4       2013-09-17 00:00:00
2       2013-09-24 00:00:00
1       2013-09-31 00:00:00
10      2013-10-07 00:00:00
...
4

3 回答 3

3

您可以通过减去一周中的某一天来转到一周的开始。这是一种方法:

select date(created_on - interval dayofweek(created_on) day), count(*)
from t
group by date(created_on - interval dayofweek(created_on) day);

如果这不是您希望一周开始的那一天,那么您可以添加一个偏移日。

于 2013-09-18T04:00:26.453 回答
1

按日期字段分组,以星期为单位:

SELECT
  count(*),
  YEARWEEK(created_on) as week
FROM
  yourtable
GROUP BY week

这假定这created_on是一种可以解释为日期的类型:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_yearweek

这将为您提供每周分组,但您可能希望随后将该字段(看起来像YYYYWW)转换回更具可读性的内容。

于 2013-09-18T04:00:14.187 回答
1

你可以试试这个

SELECT created_on, count( id ) AS count
FROM `test_table`
WHERE created_on
BETWEEN '2013-09-01'
AND '2013-10-10'
GROUP BY WEEK( created_on )
于 2013-09-18T04:24:43.847 回答