在Notepad++中用正则表达式将SQL文件DD-MON-RR日期转为YYYY-MM-DD格式
SQL日期格式批量替换方案
方案1:Notepad++ 单步完成替换(支持嵌套条件替换)
查找正则
(\d{2})-((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))-(([0-4])\d|[5-9]\d)
替换表达式
(?{16}20:19)\15-(?{3}01:(?{4}02:(?{5}03:(?{6}04:(?{7}05:(?{8}06:(?{9}07:(?{10}08:(?{11}09:(?{12}10:(?{13}11:12))))))))))-\1
效果验证
- 原
01-Nov-20替换后为2020-11-01 - 原
28-Dec-99替换后为1999-12-28
方案2:VS Code/Sublime Text 分步骤替换(不支持复杂条件判断)
第一步:处理世纪和日期顺序
替换21世纪日期(年份后两位00-49)
查找:
(\d{2})-(\w{3})-([0-4]\d)
替换为:
20$3-$2-$1
替换20世纪日期(年份后两位50-99)
查找:
(\d{2})-(\w{3})-([5-9]\d)
替换为:
19$3-$2-$1
第二步:逐个替换月份缩写为数字
依次执行以下12次查找替换:
- 查找
Jan替换为01 - 查找
Feb替换为02 - 查找
Mar替换为03 - 查找
Apr替换为04 - 查找
May替换为05 - 查找
Jun替换为06 - 查找
Jul替换为07 - 查找
Aug替换为08 - 查找
Sep替换为09 - 查找
Oct替换为10 - 查找
Nov替换为11 - 查找
Dec替换为12
注意事项
- 替换前务必备份原SQL文件,避免误操作导致数据丢失
- 如需仅匹配
to_date函数内的日期避免误改,可将查找正则扩展为匹配完整to_date语法:查找前缀添加to_date\(',后缀添加','DD-MON-RR'\),替换时保留对应前缀后缀即可。
内容的提问来源于stack exchange,提问作者Ex.
相关产品推荐
相关产品推荐

