TIMESTAMPDIFF 缺失天数

TIMESTAMPDIFF Missing Days

谁能给我解释一下为什么 returns 只有 360 天而不是 365 天?

我希望它不算第一天,但​​是其他 4 天呢?

SELECT
(TIMESTAMPDIFF(16,CHAR(TIMESTAMP('2017-12-31') - TIMESTAMP('2017-01-01'))))
FROM sysibm.sysdummy1

我打算只在最后加上 + 5。

我认为 documentation 很好地解释了这一点:

The returned estimate may vary by a number of days. For example, if the number of days (interval 16) is requested for the difference between '1997-03-01-00.00.00' and '1997-02-01-00.00.00', the result is 30. This is because the difference between the timestamps is 1 month, and the assumption of 30 days in a month applies.

也就是说,相差11个月30天——11 * 30 + 30 = 360。

SELECT DAYS(DATE('2017-12-31')) - DAYS(DATE('2017-01-01'))
FROM sysibm.sysdummy1

要获得更准确的表示,请尝试:

如果您有用于 Linux、Unix 和 Windows 的 DB2 - 现在称为 Db2 - 版本 11.1,您也可以使用

SELECT DAYS_between('2017-12-31','2017-01-01') FROM SYSIBM.SYSDUMMY1