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

Qlik Sense仪表板中基于出生日期与出院日期计算患者年龄(年+月)的公式方案

解决方案:计算患者年龄(年+月)

针对你在Qlik Sense仪表板中需要计算「出生日期(YYYYMMDD)到出院日期(YYYYMMDD)」年龄的需求,我整理了两种实用方案,你可以根据场景选择:

方案1:加载脚本中预先计算(推荐多图表复用)

如果多个图表都需要用到这个年龄数据,建议在数据加载阶段就计算好相关字段,这样仪表盘里直接调用字段即可,效率更高。

LOAD
    // 保留原有原始字段
    BirthDate,
    exitDate,
    // 先把字符串格式的日期转成Qlik可识别的日期类型
    Date(BirthDate, 'YYYYMMDD') as BirthDate_Date,
    Date(exitDate, 'YYYYMMDD') as ExitDate_Date,
    // 计算从出生到出院的总月数(核心逻辑:处理日的边界情况)
    (Year(ExitDate_Date) - Year(BirthDate_Date))*12 + 
    Month(ExitDate_Date) - Month(BirthDate_Date) - 
    If(Day(ExitDate_Date) < Day(BirthDate_Date), 1, 0) as Total_Age_Months,
    // 提取年数
    Floor(Total_Age_Months / 12) as Age_Years,
    // 提取剩余月数
    Mod(Total_Age_Months, 12) as Age_Months,
    // 组合成友好的显示文本(处理0年0月的特殊情况)
    If(Total_Age_Months = 0, 
        '0月', 
        If(Age_Years > 0, Age_Years & '年', '') & If(Age_Months > 0, Age_Months & '月', '')
    ) as Age_Text
FROM 
    [你的数据源路径]; // 替换成实际的数据源路径

方案2:仪表盘表达式直接计算(适合临时单图表需求)

如果只是单个图表需要展示年龄,可以直接在图表的表达式中写计算逻辑,无需修改加载脚本:

= 
// 先定义临时变量存储转换后的日期
Let vBirthDate = Date(BirthDate, 'YYYYMMDD');
Let vExitDate = Date(exitDate, 'YYYYMMDD');
// 计算总月数
Let vTotalMonths = (Year(vExitDate) - Year(vBirthDate))*12 + Month(vExitDate) - Month(vBirthDate) - If(Day(vExitDate) < Day(vBirthDate), 1, 0);
// 组合成最终显示文本
If(vTotalMonths = 0, 
    '0月', 
    If(Floor(vTotalMonths/12) > 0, Floor(vTotalMonths/12) & '年', '') & If(Mod(vTotalMonths,12) > 0, Mod(vTotalMonths,12) & '月', '')
)

关键逻辑说明

为什么要额外判断「出院日是否小于出生日」?举个例子:

  • 出生日期:20170925,出院日期:20180103
  • 如果只按年份和月份差计算,会得到(2018-2017)*12 +1-9=4个月,但实际上从9月25到12月25才满3个月,1月3日还没到下一个月,所以要减去1个月,最终得到3个月,这样结果更准确。

内容的提问来源于stack exchange,提问作者Pooneh.T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:11:06