几天的mysql分组

时间:2011-04-06 08:29:21

标签: mysql grouping days

我有这个计划:

+-------+
|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

3 个答案:

答案 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

相关问题