将数据库表中YYMM格式日期字段更新为YYYYMM格式
统一日期格式为YYYYMM的快速实现方案
核心思路
先识别出长度为4位的YYMM格式记录,再在其头部拼接20转换为YYYYMM格式。具体实现需根据字段类型(字符串/数值)和使用的数据库调整。
分场景实现代码
1. 字段为字符串类型(如VARCHAR)
MySQL
-- 先验证待更新记录,确认转换结果 SELECT date_column, CONCAT('20', date_column) AS formatted_date FROM your_table WHERE CHAR_LENGTH(date_column) = 4; -- 确认无误后执行更新 UPDATE your_table SET date_column = CONCAT('20', date_column) WHERE CHAR_LENGTH(date_column) = 4;
SQL Server
-- 验证待更新记录 SELECT date_column, '20' + date_column AS formatted_date FROM your_table WHERE LEN(date_column) = 4; -- 执行更新 UPDATE your_table SET date_column = '20' + date_column WHERE LEN(date_column) = 4;
Oracle
-- 验证待更新记录 SELECT date_column, '20' || date_column AS formatted_date FROM your_table WHERE LENGTH(date_column) = 4; -- 执行更新 UPDATE your_table SET date_column = '20' || date_column WHERE LENGTH(date_column) = 4;
2. 字段为数值类型(如INT)
如果日期存储为数值,YYYYMM是6位数值(≥100000),YYMM是4位数值(≤9999),可直接通过数值运算处理:
-- 以MySQL为例,其他数据库逻辑一致 -- 验证待更新记录 SELECT date_column, 200000 + date_column AS formatted_date FROM your_table WHERE date_column < 10000; -- 执行更新 UPDATE your_table SET date_column = 200000 + date_column WHERE date_column < 10000;
注意事项
- 操作前务必备份数据表,或先执行查询语句验证待更新记录的正确性,避免误操作。
- 若存在
00MM这类特殊年份(如2000年),上述逻辑同样适用,会自动转换为2000MM。
内容的提问来源于stack exchange,提问作者headspace
相关产品推荐
相关产品推荐

