1

我有这个计划:

+-------+
|posts: |
+----+--+--------+--------------------+
| ID |   title   |      timestamp     |
+----+-----------+--------------------+
|  1 |    t1     |2011-04-05 17:54:55 |
+----+-----------+--------------------+ 
|  2 |    t2     |2011-04-06 09:10:11 |
+----+-----------+--------------------+ 
|  3 |    t3     |2011-04-07 02:07:22 |
+----+-----------+--------------------+ 

我如何获得过去 7 天的帖子总数,如下所示:

monday: 3
Tuesday: 9
Wednesday: 2
4

3 回答 3

3

MySQL具体解决方案:

SELECT WEEKDAY(timestamp_field) AS wd, count(*) FROM your_table GROUP BY wd;

或者

SELECT count(*) FROM your_table GROUP BY WEEKDAY(timestamp_field);
于 2011-04-06T08:37:08.583 回答
2

出色地,

您必须选择日期,计数(*)并按日期分组。

SELECT date_format(TIMESTAMP, '%d %m')
       , COUNT(*)
FROM posts
WHERE TIMESTAMP BETWEEN FROMDATE AND TODATE
GROUP BY date_format(TIMESTAMP, '%d %m')

进一步的帮助和解释: MySQL Manual for DATE_FORMAT

编辑:

工作日也可以通过使用 %W 来实现。

于 2011-04-06T08:33:44.327 回答
1
SELECT WEEKDAY(timestamp), count(*)
FROM POSTS as p1
WHERE DATE_SUB(NOW(), INTERVAL 7 DAY) < timestamp
GROUP BY YEAR(timestamp), MONTH(timestamp), DAY(timestamp)
ORDER BY YEAR(timestamp) desc, MONTH(timestamp) desc, DAY(timestamp) desc

查看 MySQL 中的日期和时间函数

于 2011-04-06T08:34:53.033 回答