MYSQL按日,周和月分组,带有php时间戳[重复]

Posted

技术标签:

【中文标题】MYSQL按日,周和月分组,带有php时间戳[重复]【英文标题】:MYSQL group by day, week and month with php timestamp [duplicate] 【发布时间】:2012-12-03 23:58:22 【问题描述】:

可能重复:mysql Query GROUP BY day / month / year

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

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

如何做到这一点?

【问题讨论】:

你试过了吗? MONTH(timeStamp) 返回 NULL 【参考方案1】:

你为什么不使用这些:

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。

【讨论】:

我想例如做:dec 16 X个帖子,dec 15 x个帖子(过去15天都这样做,不管今天是什么),我也想在几周内做同样的事情个月来了解发布了多少帖子。 MONTH(timeStamp) 返回 NULL【参考方案2】:
SELECT MONTH( FROM_UNIXTIME(  `timeStamp` ) ) , COUNT(  `id` ) 
FROM  `discusComments` 
GROUP BY MONTH( FROM_UNIXTIME(  `timeStamp` ) ) 

【讨论】:

解释为什么可以解决问题。【参考方案3】:

给你一个很好的例子

to group by week

编辑:

试试这个

          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

【讨论】:

【参考方案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

【讨论】:

以上是关于MYSQL按日,周和月分组,带有php时间戳[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从日、年和月获取时间戳[重复]

Mysql按日周月进行分组统计

我需要从结构为 yyyyMMddHHmmss 20170227141500 的时间戳中按年和月分组

SQL 分组按周和月在同一时间 (Redshift)

如果仅按日和月将两个日期与 Oracle SQL 进行比较

按日和月对数据进行排序(忽略年份)python pandas