在 Spotfire 中使用 Datediff 的整数函数

Integer function with Datediff in Spotfire

我想在 Spotfire 中添加一个新列,这样我就可以得到这个人的年龄。 这是使用的函数:

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

然而,计算列 returns 为 (Empty)。 如果我 运行 表达式没有 Integer()/365 函数 returns 适当的天数。

使用函数Days :

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

解释:您的结果是一个时间跨度,因此无法转换为整数。 Days 函数将提取时间跨度的整数值。

我看到之前的答案解决了您的问题,但我为其他有类似问题的人提供了替代解决方案。

你目前计算一个人的年龄,方法是计算一个人在某个时间点(在你的例子中是 2018 年 3 月 31 日)活着的天数,然后除以天数乘以 365,结果为实数,例如 28.6 年。

除以 365,您的示例没有考虑闰年。这对您来说可能不是问题,但对其他用户来说可能是问题。

下面的表达式将

  1. Return 年数为实数(如28.6),如 你的
  2. 在计算中考虑闰年

    DateDiff("year", 
             Date([Y_BIRTH_DATE],[M_BIRTH_DATE], [D_BIRTH_DATE]), 
             Date(2018,3,31))
    

请注意,我已经格式化了表达式,因此 DateDiff 函数的每个参数都有自己的一行。显然,表达式可以折叠成一行,我这样做只是为了提高清晰度。

此外,在 Spotfire 中为 DateDiff 函数提供的示例将两个日期中最早的日期作为第一个日期参数传递,并将较晚的日期作为第二个日期参数传递。这也成为我的习惯,所以这就是我在示例中放置日期参数的顺序。