如何在MySQL命令行中将int数据类型修改为date类型
MySQL命令行int字段转date类型操作步骤
推荐使用稳妥的分步操作,避免直接修改原字段导致数据损坏:
- 操作前先备份整张表数据,避免操作失误丢失数据
备份命令:mysqldump -u 你的数据库用户名 -p 目标数据库名 目标表名 > 自定义备份文件名.sql,执行后输入数据库密码即可完成备份 - 第一步:在表中新增一个date类型的临时字段
命令:ALTER TABLE 目标表名 ADD COLUMN 临时字段名 DATE; - 第二步:根据原int字段的存储格式,把转换后的数据写入临时字段
- 若原int为
YYYYMMDD格式(例:20240520对应2024-05-20):UPDATE 目标表名 SET 临时字段名 = STR_TO_DATE(原int字段名, '%Y%m%d'); - 若原int为10位秒级Unix时间戳:
UPDATE 目标表名 SET 临时字段名 = FROM_UNIXTIME(原int字段名, '%Y-%m-%d'); - 若原int为13位毫秒级Unix时间戳:
UPDATE 目标表名 SET 临时字段名 = FROM_UNIXTIME(原int字段名/1000, '%Y-%m-%d');
- 若原int为
- 第三步:抽查临时字段的数据是否符合预期,确认无误后删除原int字段
命令:ALTER TABLE 目标表名 DROP COLUMN 原int字段名; - 第四步:把临时字段重命名为原字段名即可
命令:ALTER TABLE 目标表名 CHANGE COLUMN 临时字段名 原字段名 DATE;
注意事项
- 若表数据量较大,UPDATE和ALTER TABLE操作都会锁表,建议在业务低峰期执行,避免影响正常业务
- 修改完成后可执行
DESC 目标表名;查看字段类型是否修改成功,也可抽查部分数据确认值是否匹配
内容的提问来源于stack exchange,提问作者Mahesh Divate
相关产品推荐
相关产品推荐

