如何区分处理长度为9的m/dd/yyyy和mm/d/yyyy两种日期格式?
Access日期格式转换临时修复方案
修复后的原逻辑适配方案
你判断9位日期第2位是否为斜杠的思路可行,调整后的完整IIf嵌套逻辑如下:
IIf(Len([Expression])=6,"0" & [Expression], IIf(Len([Expression])=7,[Expression], IIf(Len([Expression])=8,Left([Expression],1) & "/" & Right([Expression],4), IIf(Len([Expression])=9, IIf(Mid([Expression],2,1)="/", Left([Expression],1) & "/" & Right([Expression],4), Left([Expression],2) & "/" & Right([Expression],4)), IIf(Len([Expression])=10,Left([Expression],2) & "/" & Right([Expression],4))))))
修改说明:
- 9位长度分支新增嵌套判断,用
Mid([Expression],2,1)提取字符串第2位字符校验:- 第2位为斜杠时对应
m/dd/yyyy格式,取第1位作为月份拼接年份,避免出现双斜杠错误 - 第2位不为斜杠时对应
mm/d/yyyy格式,取前2位作为月份拼接年份即可
- 第2位为斜杠时对应
- 统一了表达式内的字段名拼写,避免大小写不一致导致的Access识别异常
更高效的简化方案
无需判断长度,直接用Split函数拆分斜杠取月份,适配所有你提到的日期格式,写法更简洁:
Split([Expression], "/")(0) & "/" & Right([Expression],4)
该逻辑会直接提取第一个斜杠前的内容作为月份,自动适配所有带斜杠的常规日期格式,无需多层IIf嵌套。
内容的提问来源于stack exchange,提问作者gwhb
相关产品推荐
相关产品推荐

