You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:10:28