mysql - 在 DATETIME 字段上按月分组

标签 mysql sql

我在 mysql 中有以下查询:

SELECT title, 
       added_on 
FROM   title 

结果是这样的:

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

我想获取每个月的标题数,因此结果如下所示:

Count               Month
42                  2013-10-01
20                  3013-09-01

我能想到的最接近的是:

SELECT Count(*), 
       Date(timestamp) 
FROM   title 
GROUP  BY Date(timestamp) 

但这只是按天分组,而不是按月分组。我如何在这里按月分组?

最佳答案

你能试试这个吗?

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”,如下所示。

mysql> SELECT MONTH('2013-01-01'), MONTH('2014-01-01');
+---------------------+---------------------+
| MONTH('2013-01-01') | MONTH('2014-01-01') |
+---------------------+---------------------+
|                   1 |                   1 |
+---------------------+---------------------+

关于mysql - 在 DATETIME 字段上按月分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20963503/

相关文章:

mysql - 查询未使用我在多个列上的索引

sql-server - 如何将 SELECT 和 INSERT 命令组合到 SQL Server 中不存在的表中?

mysql - 如何更改 MySQL 中一个表中的主键和另一个表中的外键?

mysql - 将函数输出转换为列名称

mysql - 加载数据库文件时出现 SQL 语法错误(可能是版本错误?)

php - 有没有比附加 sql 字符串更好的方法来生成条件 sql?

sql - FOR JSON 路径在 AZURE SQL 上返回较少的行数

php - 如何将这段代码转为sql删除函数?

c# - 跟踪数据库对所有表的更改

mysql - phpMyAdmin中的批量更新栏目