我有一个用于生日的列和它的varchar类型,我想要更改为日期并添加全年而不是仅仅2位数。
如果出生于05061985的人,MySQL将首先删除0并显示为50685
更改50685
要==> 05061985
所有用户的生日都是从1900年到1999年
答案 0 :(得分:1)
让我们一步一步地做到这一点
我们可以使用len 5或6的字符串,所以我们确保我们有一个len 6字符串左填充零
select LPAD('50685', 6, '0');
现在我们在第4和第5位之间的字符串中插入'19'
select CONCAT(LEFT(LPAD('50685', 6, '0'), 4), '19', RIGHT(LPAD('50685', 6, '0'), 2));
现在最后一步我们将更新表FOOBAR中的所有BIRTHDAY字段
update FOOBAR set BIRTHDAY=CONCAT(LEFT(LPAD(BIRTHDAY, 6, '0'), 4), '19', RIGHT(LPAD(BIRTHDAY, 6, '0'), 2));
无论如何在这种情况下你仍然有一个字符串字段,我建议更多地修改格式以进行正确的日期字段转换,例如YYYY-MM-DD
update FOOBAR set BIRTHDAY=LPAD(BIRTHDAY, 6, '0');
update FOOBAR set BIRTHDAY=CONCAT('19' ,
RIGHT(BIRTHDAY, 2),
'-',
SUBSTR(BIRTHDAY, 3, 2),
'-',
LEFT(BIRTHDAY, 2));
alter table FOOBAR modify BIRTHDAY date;