Power Query中MM/DD格式日期补全正确年份的实现问题咨询
Power Query MM/DD字符串转完整日期(含跨年逻辑)
原有代码报错原因
- 误用
Date.Month/Date.Day函数:这两个函数仅支持日期/时间类型入参,直接传入文本会触发类型错误 - 拆分逻辑不稳定:用
Text.Start/Text.End硬切字符长度,遇到单数字月份(如1/5)就会错位报错
最终实现代码
在Power Query编辑器中添加自定义列,粘贴以下代码即可:
let // 按斜杠拆分MM/DD字符串,转成数值型的月、日 SplitDate = Text.Split([STATUS DATE], "/"), InputMonth = Number.From(SplitDate{0}), InputDay = Number.From(SplitDate{1}), // 获取当前系统时间的年、月 CurrentYear = Date.Year(DateTime.LocalNow()), CurrentMonth = Date.Month(DateTime.LocalNow()), // 跨年逻辑处理:1月遇到10/11/12月日期,自动归属上一年 FinalYear = if CurrentMonth = 1 and InputMonth >= 10 then CurrentYear - 1 else CurrentYear in // 输出日期,非法格式返回空值避免查询报错 try #date(FinalYear, InputMonth, InputDay) otherwise null
逻辑说明
- 按分隔符拆分的逻辑兼容单/双数字的月份、日期格式,容错率远高于硬切字符长度的方案
- 跨年逻辑完全匹配需求:仅当当前为1月时,才会把四季度的日期归属到上一年,其余场景默认取当前年
- 若需要自定义非法格式的返回值,可把代码末尾的
null替换为你需要的占位值即可
内容的提问来源于stack exchange,提问作者Alan Treanor
相关产品推荐
相关产品推荐

