我在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列中没有日值,因此可以替换为默认值。
期待您的帮助!预先感谢!
答案 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;