问题描述
我有两个字段作为“月和年”,其中“月”字段以3个字符(Apr)的形式存储月份的字符串格式,而“年”字段以数字格式(2020)存储数据, 现在,我需要将这两种数据都选择为一种新格式(04-2020),例如desired_column。
+-------+------+----------------+
| month | year | desired_column |
+-------+------+----------------+
| Apr | 2018 | 04-2018 |
+-------+------+----------------+
解决方法
阅读Chapter 12 Functions and Operators中的MySQL Reference Manual,以了解可用的方法,您将找到解决方案:
- 使用说明符
%b
用STR_TO_DATE
解析月份名称 - 使用说明符
%m
用DATE_FORMAT
将月份格式化为2位数的数字 - 与
-
组合,并与CONCAT()
组合年份
SELECT CONCAT(DATE_FORMAT(STR_TO_DATE(month,'%b'),'%m'),'-',year) AS desired_column
FROM mytable
,
根据@Andreas,您应该使用STR_TO_DATE
和DATE_FPRMAT
,但使用的方式略有不同(STR_TO_DATE wot仅适用于一个月),因此下一个查询可能是
WITH data (`month`,`year`) as (
select 'Jan',2020
union select 'Feb',2020
union select 'Mar',2020
union select 'Apr',2020
union select 'May',2020
union select 'Jun',2020
union select 'Jul',2020
union select 'Sep',2020
union select 'Oct',2020
union select 'Nov',2020
union select 'Dec',2020
)
SELECT *,DATE_FORMAT(STR_TO_DATE(concat('01',month,year),'%d%b%Y'),'%m-%Y') converted_date from data;
可以在此处找到工作示例SQLize.online