我有一个用于生日的列,它是 varchar 类型,我想更改为日期并添加完整年份,而不是仅使用 2 位数字。
如果某人出生于 05061985,MySQL 会删除前 0 并显示为 50685
更改50685
至==>05061985
所有用户的生日都是从 1900 年到 1999 年
最佳答案
让我们一步一步来
我们可以有长度为 5 或 6 的字符串,因此我们确保有一个长度为 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;
关于mysql - 在 MySQL 中用全年更新生日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37729482/