2016-07-24 96 views
3

我试图按月计算添加的记录数。下面的查询工作正常如何使用mysqli在查询内获得按月份的月份名称?

SELECT COUNT(*) AS count_by_month, MONTH(date_added) AS in_month 
FROM  `promotion` 
WHERE  YEAR(date_added) = '2016' 
GROUP BY MONTH(date_added) 

但上面的查询的结果将返回月份数,我希望得到月份名称,如JanFeb而不是数量。我试过下面的技巧,但它不起作用。

SELECT COUNT(*) AS count_by_month, 
    MONTH(date_added) AS in_month, MONTHNAME(STR_TO_DATE(in_month, '%m')); 
    FROM  `ws_promotion` 
    WHERE  YEAR(date_added) = '2016' 
    GROUP BY MONTH(date_added) 

任何人都可以指导我如何解决这个问题,我想感谢,如果有人指导我这一点。谢谢。

回答

2

试试这个:

SELECT  
    COUNT(*) AS count_by_month, 
    MONTH(date_added) AS in_month, 
    MONTHNAME(date_added) 
FROM  `ws_promotion` 
WHERE  YEAR(date_added) = '2016' 
GROUP BY MONTH(date_added) 

注:MONTHNAME(date)功能预计date作为参数。

例子:

mysql> SELECT MONTHNAME('2009-05-18'); 
+-------------------------+ 
| MONTHNAME('2009-05-18') | 
+-------------------------+ 
| May      | 
+-------------------------+ 
1 row in set (0.02 sec) 

更多: 如果你想从数个月的名称,那么你可以使用STR_TO_DATE()将数字转换为日期,然后再回来MONTHNAME()

SELECT MONTHNAME(STR_TO_DATE(7, '%m')); 

+---------------------------------+ 
| MONTHNAME(STR_TO_DATE(7, '%m')) | 
+---------------------------------+ 
| July       | 
+---------------------------------+ 
+0

它为我工作。谢谢 –

+0

不客气:)。我已经更新了更多细节的答案。 – 1000111