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
谁能给我解释一下为什么 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