MySQL中使用CONCAT和REPLACE转换dd.mm.yyy日期格式是否可行
日期格式转换实现方案
可以通过REPLACE和CONCAT组合实现该需求,具体实现逻辑和示例如下:
前提说明
默认你提到的dd.mm.yyy为笔误,实际为dd.mm.yyyy四位年份格式,若确实为三位年份,可对应调整后续截取参数即可。
实现逻辑
通用逻辑不依赖数据库类型,调整对应字符串截取函数即可复用:
- 先用字符串截取函数(常用
SUBSTRING/SUBSTR)分别提取日期中的日、月、年三个部分 - 用
CONCAT函数按标准日期yyyy-mm-dd的顺序拼接三个部分,用短横线分隔 - 若无需调整字段顺序,仅需替换分隔符,可直接用
REPLACE将.替换为-即可
常用数据库示例
MySQL 示例
拆分拼接写法(推荐)
直接生成标准yyyy-mm-dd格式,适配所有数据库的日期类型识别:
SELECT CONCAT( SUBSTRING(你的日期字段名, 7, 4), '-', SUBSTRING(你的日期字段名, 4, 2), '-', SUBSTRING(你的日期字段名, 1, 2) ) AS standard_date FROM 你的表名;
如果需要直接转换为日期类型,可外层嵌套STR_TO_DATE函数:
SELECT STR_TO_DATE( CONCAT( SUBSTRING(你的日期字段名, 7, 4), '-', SUBSTRING(你的日期字段名, 4, 2), '-', SUBSTRING(你的日期字段名, 1, 2) ), '%Y-%m-%d' ) AS standard_date FROM 你的表名;
仅替换分隔符写法
适合仅需要统一分隔符的场景:
SELECT REPLACE(你的日期字段名, '.', '-') AS formatted_date FROM 你的表名;
注意事项
- 执行全量转换前,建议先取10-20条数据验证转换结果,避免月、日顺序颠倒
- 若日期字段存在不规则格式(比如单数字日月写成
1.2.2024而非01.02.2024),需要先补位处理再执行转换
内容的提问来源于stack exchange,提问作者nathasya simandjuntak
相关产品推荐
相关产品推荐

