MySQL - 选择过去7天的条目数

时间:2015-02-15 22:36:17

标签: mysql

这就是我的表格的样子

-----------------------
  posts
----------------------
id
created_at
..
..

MySQL Query应如何显示,以便我获得过去7天的条目数。 结果看起来应该是这样的: ['Mon' => 234, 'Tues' => 12, ...]

3 个答案:

答案 0 :(得分:0)

您可以{/ 1}}使用

datediff

如果你想要其他一天的0值,那么你必须在最近七天产生的假表上使用左连接。

select count(*), extract(day from created_at) current_day
from posts
where datediff(now(), created_at) <= 7
group by current_day;

答案 1 :(得分:0)

SELECT COUNT(*)
FROM posts
WHERE created_at<xy
GROUP BY created_at

答案 2 :(得分:0)

SELECT COUNT(*), DATE_FORMAT(created_at,'%a')
FROM posts
WHERE created_at <= NOW() AND created_at >= DATE_SUB(created_at, INTERVAL 7 DAY)
GROUP BY DATE_FORMAT(created_at,'%a')

为工作日添加0,计数为null:

SELECT a.weekday, IFNULL(b.total,0) FROM 
(SELECT 'Mon' as weekday from dual union SELECT 'Tue' as weekday from dual union SELECT 'Wed' as weekday from dual union SELECT 'Thu' as weekday from dual union SELECT 'Fri' as weekday from dual union SELECT 'Sat' as weekday from dual union SELECT 'Sun' as weekday from dual) a
LEFT JOIN 
(SELECT COUNT(*) as total, DATE_FORMAT(created_at,'%a') as weekday
FROM posts
WHERE created_at <= NOW() AND created_at >= DATE_SUB(created_at, INTERVAL 7 DAY)
GROUP BY DATE_FORMAT(created_at,'%a')) b on a.weekday=b.weekday