怎么把“ YYYYMM”格式转换成“ YYYY-MM-00”?

时间:2020-10-06 19:34:11

标签: mysql sql date

我在mysql中有一个示例表

id     yearmonth     
1      202001        
2      202002
3      202011
4      202012
5      201912
6      201911

mysql中所需的表是

id     yearmonth  
 1     2020-01-00
 2     2020-02-00
 3     2020-11-00
 4     2020-12-00
 5     2019-12-00
 6     2019-11-00

由于第一张表的yearmonth列中没有日值,因此可以替换为默认值。

期待您的帮助!预先感谢!

2 个答案:

答案 0 :(得分:1)

您可以使用STR_TO_DATE功能。

SELECT STR_TO_DATE('202001','%Y%m');
Output:
2020-01-00

如果要将day设置为默认值。只需使用DATE_FORMAT

SELECT DATE_FORMAT(STR_TO_DATE('202001','%Y%m'), '%Y-%m-01');
Output:
2020-01-01

@Akina提到它依赖于NO_ZERO_IN_DATE并可能导致null的结果。您可以寻找这种选择

SELECT CONCAT(LEFT('202010',4) , '-' , RIGHT('202010',2) , '-01');

如果您希望它date键入,则可以显式使用CAST

SELECT CAST( CONCAT(LEFT('202010',4) , '-' , RIGHT('202010',2) , '-01') AS DATE);

答案 1 :(得分:0)

如何将yearmonth列数据值与所需的默认日期值连接起来,然后使用STR_TO_DATE更改为日期格式:

SELECT STR_TO_DATE(CONCAT(yearmonth,'01'), '%Y%m%d') FROM test;

或使用DATE_FORMAT

SELECT DATE_FORMAT(CONCAT(yearmonth,'01'), '%Y-%m-%d') FROM test;

Fiddle