繁体   English   中英

获取特定日期范围的月份名称

[英]Get the months name for the a particular date range

我有一个日期范围'2015/01/01'到'2015/12/31'。 我的数据库有日期,表“device”的device_id列。

从这个日期范围我想显示当月的唯一device_id的月份名称和№。 例如,我的datedevie_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM