2012-11-17 101 views
1

我想监视站点上不同类型的操作,我将使用登录作为示例。MySQL - 按时间戳范围的组

user_logins table: 

user_id  name   when_logged 
-------  ----   ----------- 
smallint varchar(128) timestamp 

所以,看看谁登录今日(多少次),每个用户使用:

select name, count(name) from user_logins 
where when_logged between '2012-11-17 00:00:00' AND '2012-11-17 23:59:59' 
group by name; 

然而,我想要做的,在过去的14天,每一天seperately ...

是否可以在一个查询中执行此操作,而不是通过更改日期执行14个查询?

回答

1
select name, count(when_logged) 
from user_logins 
where when_logged >= curdate() - interval 14 day 
group by name, date(when_logged) 
+0

感谢 - 但是,这并不限制在过去14天因某种原因 –

+0

当然。修正了。 –

+0

完美,非常感谢! –

1
select date(when_logged) as datelogged, name, count(name) 
from user_logins 
where when_logged >= date_sub(current_timestamp, INTERVAL 14 day) 
group by name, date(when_logged); 
+0

非常感谢,非常感谢! –