Spotfire中带有Datediff的整数函数

时间:2018-07-11 08:36:00

标签: spotfire

我正在尝试在Spotfire中添加新列,以便获得该人的年龄(以岁为单位)。 这是使用的功能:

Integer(DateDiff(Date(2018,3,31),Date([Y_BIRTH_DATE],[M_BIRTH_DATE], [D_BIRTH_DATE])))/365

但是,计算列返回为(Empty)。 如果我在不使用Integer()/365的情况下运行表达式,则该函数将返回适当的天数。

2 个答案:

答案 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年”。对于您来说,这可能不是问题,但对于其他用户而言,则可能是问题。

以下表达式将

  1. 将年数返回为实数(例如28.6), 你的
  2. 在计算中计算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参数的顺序。