为什么 Firebird 中 datediff year 的结果太高了?

Why is the result of datediff year in Firebird too high?

我对 firebird 中的函数 datediff 有疑问。当我尝试像这样

在 sql 中区分 15.12.1999 和 30.06.2000 这样的两个日期时
SELECT
SUM(datediff (YEAR, W.FROM, W.TO)),
SUM(datediff (MONTH, W.FROM, W.TO)),
SUM(datediff (DAY, W.FROM, W.TO))
FROM WORKERS W
WHEN W.ID=1

我得到的结果是 1 年、6 个月和 198 天,但是年值不正确(当然结果应该是 0)我必须如何编写查询才能在参数年中获得正确的结果?在那个 link https://firebirdsql.org/refdocs/langrefupd21-intfunc-datediff.html 文档中有关于这种情况的信息,但没有如何解决这个问题。

文档不是很清楚,但我很确定datediff() 正在计算两个日期之间的边界数。 (这就是 SQL 服务器中非常相似的函数的工作方式。)因此,对于 year,它正在计算 "Dec 31st/Jan 1st" 边界的数量。 在文档中有明确解释。

如果您想要更准确的计数,可以使用较小的增量。以下是非常接近的:

(datediff(day, w.from, t.to) / 365.25) as years_diff