一尘不染

计算DB2中两个日期之间有多少天?

sql

我需要弄清楚DB2中两个日期之间的天数差异。我尝试了几个不同的查询,但似乎没有任何效果。所以基本上我需要得到的是这样的东西。

 SELECT DAYS (CURRENT DATE) - DAYS (DATE(CHDLM)) FROM CHCART00 WHERE CHSTAT = '05';

我知道,如果我删除CHDLM并指定一个类似于“
2012-02-20”的日期,则它可以工作,但是我需要能够针对表中的该字段运行该日期。我也尝试了一个由朋友给我的查询,该查询也不起作用。

 select days (current date) - days (date(select concat(concat(concat(concat(left(a2.chdlm,4),'-'),substr(a2.chdlm,4,2)),'-'),right(a2.chdlm,2))) from sysibm.sysdummy1 a1, chcart00 a2 where chstat = '05';

请任何帮助将不胜感激。谢谢


阅读 904

收藏
2021-03-10

共1个答案

一尘不染

我认为@Siva处于正确的轨道(使用DAYS()),但是嵌套的CONCAT()s使我感到头晕。这是我的看法。
哦,引用毫无意义sysdummy1,因为无论如何您都需要从表中拉出。
另外,请勿使用隐式联接语法-它被视为SQL反模式。

为了便于阅读,我将日期转换包装在CTE中,但是没有什么可以阻止您进行内联处理。

WITH Converted (convertedDate) as (SELECT DATE(SUBSTR(chdlm, 1, 4) || '-' ||
                                               SUBSTR(chdlm, 5, 2) || '-' ||    
                                               SUBSTR(chdlm, 7, 2))
                                   FROM Chcart00
                                   WHERE chstat = '05')

SELECT DAYS(CURRENT_DATE) - DAYS(convertedDate)
FROM Converted
2021-03-10