我有一个看起来像
的数据库表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
答案 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)
请参阅: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中它是,并且它使查询非常易读。)