DAX计算到期日与今日日期差出现1899年异常日期问题求助
解决DAX计算日期差出现1899年异常的问题
核心原因分析
你看到的1899年异常值,本质是DAX将数值0(或空白转换的0)按照Excel/DAX的日期基准(1899-12-30)解析成了日期格式。常见触发场景:
Task[TaskDueDate]存在空白值,DATEDIFF遇到空白时返回空白,若后续被自动转换为数值0,再被格式化为日期就会显示1899年;- 你将
duein字段的格式误设置为日期格式,而非数值/整数格式,导致原本的日期差数值被当成日期序列值解析。
分步解决方案
1. 修正字段显示格式
在Power BI中选中duein字段,进入「建模」选项卡,在「格式」下拉菜单里选择「整数」或「小数」,取消日期格式设置。这是最常见的触发原因——把数值类的日期差当成了日期来显示。
2. 处理空白到期日
如果Task[TaskDueDate]存在空白值,在公式里添加空白判断,避免无效计算:
duein = IF( NOT(ISBLANK(Task[TaskDueDate].[Date])), DATEDIFF(TODAY(), Task[TaskDueDate].[Date], DAY), BLANK() // 也可替换为自定义提示值,比如"无到期日" )
3. 贴合需求调整逾期标记逻辑
你的目标是标记已逾期但未完成的任务,可直接基于日期差写判断列:
逾期标记 = IF( AND( NOT(ISBLANK(Task[TaskDueDate].[Date])), DATEDIFF(TODAY(), Task[TaskDueDate].[Date], DAY) < 0, Task[任务状态] = "未完成" // 替换为你实际的任务状态字段名 ), "已逾期未完成", "正常" )
验证步骤
- 用
COUNTBLANK(Task[TaskDueDate])统计空白行数,确认Task[TaskDueDate]是否存在空白值; - 确认
duein格式设置正确后,刷新数据查看结果。
内容的提问来源于stack exchange,提问作者user1002771
相关产品推荐
相关产品推荐

