php - 按每年唯一的月份分组,而不仅仅是月份

标签 php mysql sql

Possible Duplicate:
MySQL Query GROUP BY day / month / year

我有以下 mysql:

SELECT MONTH( FROM_UNIXTIME(  `timeStamp` ) ) as month , COUNT(  `id` )  as count
FROM  `discusComments` 
GROUP BY MONTH( FROM_UNIXTIME(  `timeStamp` ) ) 
ORDER BY  MONTH( FROM_UNIXTIME(  `timeStamp` ) ) ASC 
LIMIT 15

它获取过去 15 个月中每月输入的条目数量。我想知道为什么它只显示过去 12 个月......然后我意识到计数是所有年份的总计,而不是每个月的唯一值。因此 12 月的值可能是 2012 年和 2011 年的总和。

我不想要这个。我想要获取过去 15 个月以及针对唯一月份年份的条目数量,例如2012年12月、2012年11月等

最佳答案

我对此最直接的想法通常是将日期值的格式更改为唯一且可说话的字符串,例如 2012-12 表示 2012 年 12 月,2011-10 表示 2011 年 10 月等。

您可以使用的函数是 DATE_FORMAT() :

 DATE_FORMAT(FROM_UNIXTIME(timeStamp), '%Y-%m')

这些字符串可以轻松排序,例如升序:

2011-10
2011-11
2011-12
...
2012-10
2012-11
2012-12

SQL 查询示例:

SELECT
  DATE_FORMAT(FROM_UNIXTIME(timeStamp), '%Y-%m') as month, 
  COUNT(id) as count
FROM  discusComments
GROUP BY month
ORDER BY month ASC 
LIMIT 15

关于php - 按每年唯一的月份分组,而不仅仅是月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13905353/

相关文章:

MySQL集群复制配置

Mysql IPv6 连接

mysql - 在CentOS7中安装mysql 5.1

java - 在 MySQL 数据库上使用 HQL 使用子查询(联接到同一个表)进行更新时出现问题。

mysql - 如何使用 JDBC 在数据库的某些表中搜索字符串?

sql - 今天和昨天找个时间

Php 脚本在本地主机上完全工作,只有部分在服务器上工作

php - 使用谷歌帐户注册/登录本地主机应用程序

php - Phalcon PhP - 如何使用参数在 Controller 内执行查询

javascript - 在 Javascript xmlhttp 对象中打开相对 URL 时遇到问题