DAX计算6个月间隔天数异常问题排查求助
问题原因分析
- 你的代码中使用
DATEADD(tblDates[End of Month], -6, MONTH)计算6个月前的日期时,会触发月末日期不存在的异常:比如当前月末是3月31日,减6个月后对应9月31日,但9月只有30天,DATEADD无法生成有效日期,会返回空值。此时DATEDIFF因参数为空无法计算,最终只有那些减6个月后仍存在对应月末日期的月份(如1月31日→7月31日、7月31日→1月31日这类31天的月份)能显示结果,其他月份均为空。 - 改成-7时,比如3月31日减7个月对应8月31日(存在有效日期),所有月份都能得到非空的EndDate,但实际计算的是7个月末之间的天数,不符合6个月的需求。
修正后的DAX代码
6M Days = VAR StartDate = MAX(tblDates[End of Month]) VAR EndDate = EOMONTH(StartDate, -6) RETURN DATEDIFF(EndDate, StartDate, DAY)
代码说明
- 用
EOMONTH替代DATEADD:EOMONTH(基准日期, 月份偏移量)会直接返回目标月份的最后一天,无需考虑原日期的具体天数。比如3月31日传入EOMONTH并偏移-6,会返回9月30日(9月的最后一天),不会出现空值。 - 修正后所有月份都能获取到有效的StartDate和EndDate,计算结果为准确的6个月末之间的天数。
内容的提问来源于stack exchange,提问作者Werner Vorstman
相关产品推荐
相关产品推荐

