我有这个计划:
+-------+
|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
答案 0 :(得分: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);
答案 1 :(得分: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可以通过此功能实现工作日。
答案 2 :(得分: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中的date and time functions。