注册

详解MySQL的MONTHNAME()函数:返回日期的月份

MySQL的MONTHNAME()函数用于将日期中的月份数字转换成对应的月份名称。例如,将数字3表示的月份转换为"March"。

MONTHNAME()的语法如下:

MONTHNAME(date)

其中,date是日期或日期/时间表达式。

例如,将"2019-03-27"转换为"March",可以使用以下语句:

SELECT MONTHNAME('2019-03-27');

输出结果为:

March

以下是两个实例:

实例1:将月份数字转换为月份名称

假设有一张sales表,其中包含日期和销售额。要按月份列出每个月的销售额,我们需要将日期中的月份转换为对应的月份名称。

可以使用以下语句:

SELECT MONTHNAME(sales_date), SUM(sales_amount) FROM sales GROUP BY MONTHNAME(sales_date);

这将按月份列出每个月的销售额,如下所示:

+----------------------+-----------------+
| MONTHNAME(sales_date) | SUM(sales_amount) |
+----------------------+-----------------+
| January              |          2356.00 |
| February             |          4921.00 |
| March                |          6985.00 |
| April                |          5103.00 |
| May                  |          3201.00 |
| June                 |          2735.00 |
| July                 |          2928.00 |
| August               |          3921.00 |
| September            |          4580.00 |
| October              |          5200.00 |
| November             |          3680.00 |
| December             |          4212.00 |
+----------------------+-----------------+

实例2:显示最近一年内每个月的名称和日期

假设需要显示最近一年内每个月的名称和日期。可以将当前日期减去12个月,并使用MONTHNAME()函数将每个月的数字转换为对应的月份名称。

可以使用以下语句:

SELECT MONTHNAME(DATE_SUB(NOW(), INTERVAL i MONTH)) AS month_name, DATE_SUB(NOW(), INTERVAL i MONTH) AS month_date FROM (SELECT 1 i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) a ORDER BY i DESC;

该语句将显示最近一年内每个月的名称和日期,如下所示:

+------------+------------+
| month_name | month_date |
+------------+------------+
| April      | 2020-04-29 |
| March      | 2020-03-29 |
| February   | 2020-02-29 |
| January    | 2020-01-29 |
| December   | 2019-12-29 |
| November   | 2019-11-29 |
| October    | 2019-10-29 |
| September  | 2019-09-29 |
| August     | 2019-08-29 |
| July       | 2019-07-29 |
| June       | 2019-06-29 |
| May        | 2019-05-29 |
+------------+------------+