在Filemaker上查找按时间顺序排列的年龄

时间:2016-11-16 19:55:14

标签: filemaker

我试图根据一个人的出生日期(DOB)和评估日期(DOE)来计算实际年龄。我需要将答案表示为可以放在等式中的数字。例如,如果一个人的DOB是12/26/07且DOE是10/13/15,那么实际年龄将是7.75,而不是7; 9(7年,9个月)。小数位需要是12中的函数,而不是简单地表示月份的年龄。我已经准确地计算了这一点,但每次按时间顺序年龄配置为偶数年龄(9年0个月),计算结果显示为90,我真的需要这个" 90"成为" 9.0"有什么我可以做到配置到我的计算?目前适用于其他所有年龄的计算是:

年(GetAsNumber(DOE)) - 年(DOB) - 如果(GetAsNumber(DOE)<日期(月(DOB);日(DOB);年(GetAsNumber(DOE))); 1; 0)& ; (Mod(月份(GetAsNumber(DOE)) - 月份(DOB)+ 12 - 如果(Day(GetAsNumber(DOE))< Day(DOB); 1; 0); 12)/ 12)

谢谢!

2 个答案:

答案 0 :(得分:0)

你的计算没问题,但你要连接两部分而不是添加它们。这就是为什么你得到一个“90”而不是“9”

此外,如果您希望它为“9.0”,则计算结果必须为数字;在布局模式下,将格式设置为十进制,并带有固定的小数位数。

Round (
    Year ( GetAsNumber ( DOE )) - Year ( DOB ) -
    If (
        GetAsNumber ( DOE ) < Date ( Month ( DOB ) ; Day ( DOB ) ; Year ( GetAsNumber ( DOE )));
        1 ;
        0)
    +
    ( Mod ( 
        Month ( GetAsNumber ( DOE ) ) - Month ( DOB ) + 12 -
            If (
                Day ( GetAsNumber ( DOE ) ) < Day ( DOB );
                1;
                0)
        ; 12 )
    / 12)
 ; 2 )

答案 1 :(得分:0)

我建议采用一种更简单的方法:

Let ( 
elapsedMonths = 12 * ( Year ( DOE ) - Year ( DOB ) ) + Month ( DOE ) - Month ( DOB ) - ( Day ( DOE ) < Day ( DOB ) ) 
;
Div ( elapsedMonths ; 12 ) + Mod ( elapsedMonths ; 12 ) / 12
)

请注意,这仅计算完全过去几个月。