MySQL中将varchar类型mm/dd/yyyy日期转为yyyy-mm-dd的方法
解决VARCHAR格式日期转换与批量修改问题
1. 正确的日期转换查询语句
你直接使用DATE_FORMAT("06/15/2022", "%Y-%m-%d")不生效,是因为DATE_FORMAT要求参数为日期/时间类型,而你传入的是纯字符串。需先用STR_TO_DATE将mm/dd/yyyy格式的字符串转为日期类型,再用DATE_FORMAT输出目标格式:
SELECT DATE_FORMAT(STR_TO_DATE("06/15/2022", "%m/%d/%Y"), "%Y-%m-%d");
若需要yyyy/mm/dd格式,只需将最后一个参数改为"%Y/%m/%d"即可。
针对表中字段的查询写法:
SELECT DATE_FORMAT(STR_TO_DATE(your_date_column, "%m/%d/%Y"), "%Y-%m-%d") AS formatted_date FROM your_table;
2. 批量修改数据库日期的SQL命令
批量修改前务必先备份数据,或先执行验证查询确认转换结果无误,再进行更新操作:
步骤1:验证转换结果(必做)
先查询待更新字段,确认转换后的数据符合预期:
SELECT your_date_column, DATE_FORMAT(STR_TO_DATE(your_date_column, "%m/%d/%Y"), "%Y-%m-%d") AS new_date FROM your_table;
步骤2:执行批量更新
验证通过后,执行UPDATE语句修改字段值:
UPDATE your_table SET your_date_column = DATE_FORMAT(STR_TO_DATE(your_date_column, "%m/%d/%Y"), "%Y-%m-%d");
如果希望后续规范存储,可在更新完成后将字段类型改为DATE:
ALTER TABLE your_table MODIFY COLUMN your_date_column DATE;
注意:修改字段类型前,要确保所有字符串都已转换为合法日期格式,避免触发报错。
内容的提问来源于stack exchange,提问作者avpman
相关产品推荐
相关产品推荐

