[英]Get the months name for the a particular date range
我有一个日期范围'2015/01/01'到'2015/12/31'。 我的数据库有日期,表“device”的device_id列。
从这个日期范围我想显示当月的唯一device_id
的月份名称和№。 例如,我的date
和devie_id
数据库是两列
date device_id
2015-01-01 1
2015-01-20 1
2015-03-01 1
2015-03-01 3
2015-04-01 2
2015-06-01 3
2015-08-01 4
2015-09-01 1
预期结果
Month device_count
January 1
March 2
April 1
June 1
August 1
September 1
怎么带月份Name
? 我正在使用java类来检索数据。
下面是我需要的结果清晰的图像
您可以尝试以下查询:
SELECT
DATE_FORMAT(`date`,"%M") AS 'Month',
COUNT(DISTINCT device_id) AS device_count
FROM YOUR_TABLE
GROUP BY DATE_FORMAT(`date`,"%Y-%m");
请检查这个SQL FIDDLE DEMO
结果:
您将获得如下输出:
Month device_count
January 1
March 2
April 1
June 1
August 1
September 1
注意:
%M Month name (January-December)
%Y Year, numeric, four digits
%m Month, numeric (00-12)
你可以检查MYSQL DATE_FORMAT
警告:
按年,月对分组的原因是为了确保不同年份的相同月份不会在同一时段汇总。 以下示例可能会给您一个提示:
SELECT MONTH(STR_TO_DATE('2016-04-14','%Y-%m-%d'));
结果: 4
SELECT MONTH(STR_TO_DATE('2014-04-14','%Y-%m-%d'));
结果: 4
select month(date),count(distinct device_id) from table_name group by month(date);
SELECT device_id,
DATE_FORMAT(date, '%b') AS AddDate
FROM device
这可能为你工作,但你应该reffer这个DATE_FORMAT怎么看DATE_FORMAT
工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.