我正在尝试在Spotfire中添加新列,以便获得该人的年龄(以岁为单位)。 这是使用的功能:
Integer(DateDiff(Date(2018,3,31),Date([Y_BIRTH_DATE],[M_BIRTH_DATE], [D_BIRTH_DATE])))/365
但是,计算列返回为(Empty)
。
如果我在不使用Integer()
和/365
的情况下运行表达式,则该函数将返回适当的天数。
答案 0 :(得分:1)
使用功能Days
:
Days(DateDiff(Date(2018,3,31),Date([Y_BIRTH_DATE],[M_BIRTH_DATE], [D_BIRTH_DATE])))/365
说明:您的结果是一个时间跨度,因此无法将其转换为整数。 Days
函数将提取时间跨度的整数值。
答案 1 :(得分:1)
我看到先前的答案解决了您的问题,但我为其他有类似问题的人提供了替代解决方案。
您当前正在计算某人的年龄,方法是将该人活到某个时间点的天数(在您的示例中为2018年3月31日),然后除以天数乘以365,将得出一个实数,例如28.6年。
通过除以365,您的示例未考虑“ Le年”。对于您来说,这可能不是问题,但对于其他用户而言,则可能是问题。
以下表达式将
在计算中计算leap年
DateDiff("year",
Date([Y_BIRTH_DATE],[M_BIRTH_DATE], [D_BIRTH_DATE]),
Date(2018,3,31))
请注意,我已经格式化了表达式,因此DateDiff函数的每个参数都有自己的一行。显然,该表达式可以折叠为一行,我只是这样做以提高清晰度。
此外,Spotfire中为DateDiff函数提供的示例最早将两个Date作为第一个Date参数传递,而将后面的Date作为第二个Date参数传递。同样,这也成为我的习惯,所以这就是我在示例中放置Date参数的顺序。