首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按月按日期时间字段分组

按月按日期时间字段分组
EN

Stack Overflow用户
提问于 2014-01-07 03:42:14
回答 5查看 52.6K关注 0票数 9

我在mysql中有以下查询:

代码语言:javascript
复制
SELECT title, 
       added_on 
FROM   title 

结果如下:

代码语言:javascript
复制
Somos Tão Jovens                        2013-10-10 16:54:10
Moulin Rouge - Amor em Vermelho         2013-10-10 16:55:03
Rocky Horror Picture Show (Legendado)   2013-10-10 16:58:30
The X-Files: I Want to Believe          2013-10-10 22:39:11

我希望每个月都能得到标题的计数,结果如下:

代码语言:javascript
复制
Count               Month
42                  2013-10-01
20                  3013-09-01

我能想到的最接近的方法是:

代码语言:javascript
复制
SELECT Count(*), 
       Date(timestamp) 
FROM   title 
GROUP  BY Date(timestamp) 

但这只是按日分组,而不是按月分组。我要怎么按月分组呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-01-07 03:46:32

你能试试这个吗?

代码语言:javascript
复制
select count(*), DATE_FORMAT(timestamp, "%Y-%m-01")
from title
group by DATE_FORMAT(timestamp, "%Y-%m-01")

请注意,MONTH()不能按以下方式区分“2013-01-01”和“2014-01-01”。

代码语言:javascript
复制
mysql> SELECT MONTH('2013-01-01'), MONTH('2014-01-01');
+---------------------+---------------------+
| MONTH('2013-01-01') | MONTH('2014-01-01') |
+---------------------+---------------------+
|                   1 |                   1 |
+---------------------+---------------------+
票数 43
EN

Stack Overflow用户

发布于 2014-01-07 03:44:22

代码语言:javascript
复制
SELECT Count(*), 
       Date(timestamp) 
FROM   title 
GROUP  BY Month(timestamp) 

编辑:显然,如果在结果中显示一个月的第一天很重要,那么您可以执行其他一些答案中提到的DATE_FORMAT(timestamp, "%Y-%m-01")操作:)

票数 4
EN

Stack Overflow用户

发布于 2019-07-18 22:20:31

最好的办法是按年份,然后按月分组。见下文

代码语言:javascript
复制
SELECT Count(*), Date(timestamp) FROM title GROUP BY YEAR(timestamp), Month(timestamp) 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20963503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档