mysql - 在 MySQL 中用全年更新生日

标签 mysql date

我有一个用于生日的列,它是 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/

相关文章:

php - 如何从 JSON php 中删除额外的数组

php - 如何编辑动态创建的文本框值并将其插入到 MySQL DB?

mysql - MYSQL中将日期转换为日期范围---如何处理日期中的间隙

oracle - 验证日期格式oracle

可以处理重复的不规则时间序列的滚动窗口函数

php - 从mysql中的日期字符串中选择最早的日期

php - 遍历数组并删除重复项

c# - 使用 Unity C# 和 PHP 的动态争夺游戏(Mysql 作为数据库)

java - 我怎样才能在java中获取系统的当前日期和时间而不使用任何预定义的类或库?

php - 如何在mysql中选择日期和时间之间的行?