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 |
+------------+------------+