0

可能重复:
MySQL 查询 GROUP BY 日/月/年

我有 php 时间戳(例如 1307362819)存储在我的数据库的列中。我想将数据按天、周和月分组计数(*)。

例如,我想知道每天、每周和每月有多少条目等。

如何做到这一点?

4

4 回答 4

4

您可以从时间戳中减去日、周和月值,并将减去的值分组。

按天值分组:

select count(*) from table group by from_unixtime(timeStampColumn, '%Y%m%d')

按周值分组:

select count(*) from table group by from_unixtime(timeStampColumn, '%Y%m%u')

按月值分组:

select count(*) from table group by from_unixtime(timeStampColumn, '%Y%m')

有关更多信息,请查看此页面:http ://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

于 2012-12-16T20:08:16.170 回答
0

你为什么不使用这些:<>

SELECT COUNT(*) FROM yourTable WHERE yourTimestampField > someTimestampAWeekPast;
SELECT COUNT(*) FROM yourTable WHERE yourTimestampField > someTimestampADayPast;

使用 mysql 日期/时间函数http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html计算过去所需的日期。如果将它们存储为 int 或 string 或其他形式,请使用 UNIX_TIMESTAMP。

于 2012-12-16T19:48:03.243 回答
0

这是一个很好的例子

按周分组

编辑:

尝试这个

          select
id_user,
year(time) as AYear, week(time) as AWeek, day(time) as Aday ,
count(week(time)) as TotalPerWeek , count(day(time)) as TotalPerDay ,
count(year(time)) as TotalPerYear
from yourtable
where id_user = 16             //// the user u want to check
group by id_user, AYear, AWeek , Aday
order by AYear, AWeek , Aday
于 2012-12-16T20:07:17.127 回答
-3
SELECT MONTH( FROM_UNIXTIME(  `timeStamp` ) ) , COUNT(  `id` ) 
FROM  `discusComments` 
GROUP BY MONTH( FROM_UNIXTIME(  `timeStamp` ) ) 
于 2012-12-16T20:04:49.347 回答