在MySQL

时间:2016-06-09 14:55:51

标签: mysql date date-of-birth

我有一个用于生日的列和它的varchar类型,我想要更改为日期并添加全年而不是仅仅2位数。

如果出生于05061985的人,MySQL将首先删除0并显示为50685

更改50685
要==> 05061985

所有用户的生日都是从1900年到1999年

1 个答案:

答案 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;