MySQL 将月份数字转换为月份名称
MySQL convert month number to month name
是否可以将 integer/column 转换为 MySQL 中的月份名称?
例如,1 变为 'Jan' 或 'January'。 13及以后报错,否则将永远不会使用。
- 我们可以使用
Str_To_Date()
函数将给定的输入数字转换为 MySQL 日期格式(仅关注月份)。
- 现在,我们只需要使用
Monthname()
函数从日期中提取月份名称。
- 这仅在
NO_ZERO_DATE
模式禁用时有效。
尝试:
SET sql_mode = ''; -- disable NO_ZERO_DATE mode
SELECT MONTHNAME(STR_TO_DATE(1, '%m'));
正如@Felk在评论中建议的那样,如果我们需要缩短月份名称,我们可以使用Date_Format()
函数代替:
SET sql_mode = ''; -- disable NO_ZERO_DATE mode
SELECT DATE_FORMAT(STR_TO_DATE(1, '%m'), '%b');
如果您不想禁用 NO_ZERO_DATE
模式,那么您可以使用月份创建任何随机日期并调用 Monthname()
:
SELECT MONTHNAME(CONCAT('2018-',3,'-1')); -- 3 is the input number
是否可以将 integer/column 转换为 MySQL 中的月份名称? 例如,1 变为 'Jan' 或 'January'。 13及以后报错,否则将永远不会使用。
- 我们可以使用
Str_To_Date()
函数将给定的输入数字转换为 MySQL 日期格式(仅关注月份)。 - 现在,我们只需要使用
Monthname()
函数从日期中提取月份名称。 - 这仅在
NO_ZERO_DATE
模式禁用时有效。
尝试:
SET sql_mode = ''; -- disable NO_ZERO_DATE mode
SELECT MONTHNAME(STR_TO_DATE(1, '%m'));
正如@Felk在评论中建议的那样,如果我们需要缩短月份名称,我们可以使用Date_Format()
函数代替:
SET sql_mode = ''; -- disable NO_ZERO_DATE mode
SELECT DATE_FORMAT(STR_TO_DATE(1, '%m'), '%b');
如果您不想禁用 NO_ZERO_DATE
模式,那么您可以使用月份创建任何随机日期并调用 Monthname()
:
SELECT MONTHNAME(CONCAT('2018-',3,'-1')); -- 3 is the input number