TIMESTAMPDIFF缺少天数

时间:2017-07-13 21:59:16

标签: sql db2 timestampdiff

有人可以向我解释为什么这只会返回360天而不是365天吗?

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

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

我打算在最后添加+5。

2 个答案:

答案 0 :(得分:0)

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

  

返回的估算值可能会有所不同。例如,如果   请求差异的天数(间隔16)   在'1997-03-01-00.00.00'和'1997-02-01-00.00.00'之间,结果是   30.这是因为时间戳之间的差异是1个月,而一个月内30天的假设适用。

换句话说,差异是11个月和30天 - 11 * 30 + 30 = 360。

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

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

答案 1 :(得分:0)

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

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