如何在Mysql中使用日期计算每月的行数

时间:2018-03-22 11:58:23

标签: mysql sql

我有一个看起来像

的数据库

表1

ID      Date
1       2018-01-01 15:04:03
2       2018-01-02 18:06:05
3       2018-01-03 23:21:12
4       2018-02-01 15:04:03
5       2018-02-02 18:06:05
6       2018-02-03 23:21:12

我希望以JAN-18格式或2018-01格式基于月份进行计数。

必需的输出:

Month   Count
JAN-18  3
FEB-18  3

5 个答案:

答案 0 :(得分:1)

GROUP BY年份和月份:

select year(Date), month(Date), count(*)
from table1
group by year(Date), month(Date)

格式化输出不应该那么棘手,但我不了解MySQL ......

尝试concat(cast(year(Date) as char(4)),'-',cast(month(Date) as char(2)))

答案 1 :(得分:0)

这就是你想要的:

SELECT CONCAT(UPPER(DATE_FORMAT(Date, '%b')),'-',year(Date)), count(*)
FROM table1
GROUP BY CONCAT(UPPER(DATE_FORMAT(Date, '%b')),'-',year(Date))

答案 2 :(得分:0)

您可以使用DATE_FORMAT()功能:

SELECT DATE_FORMAT(Date, '%Y-%m'), COUNT(*)
  FROM Table1
 GROUP BY DATE_FORMAT(Date, '%Y-%m')
掩码中的

%m将给出月份号码(01-12),%Y为4位数年份;使用以下内容获取您提到的其他格式:

SELECT UPPER(DATE_FORMAT(Date, '%b-%y')), COUNT(*)
  FROM Table1
 GROUP BY UPPER(DATE_FORMAT(Date, '%b-%y'))

%b是缩写的月份名称,但是大写而不是全大写; %y是两位数的年份。

答案 3 :(得分:0)

select DATE_FORMAT(Date, '%b-%y'), count(*) from table1 group by YEAR(Date), MONTH(Date)
  • %b:缩写的月份名称(Jan..Dec)
  • %y:年份,数字(两位数)

请参阅:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

答案 4 :(得分:0)

格式yyyy-mm是可排序的,因此请使用此分组:

select date_format(date, 'Y-m') as month, count(*)
from table1
group by month
order by month;

(别名的分组在标准SQL中无效,但在MySQL中它是,并且它使查询非常易读。)