我需要弄清楚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';
请任何帮助将不胜感激。谢谢
我认为@Siva处于正确的轨道(使用DAYS()),但是嵌套的CONCAT()s使我感到头晕。这是我的看法。 哦,引用毫无意义sysdummy1,因为无论如何您都需要从表中拉出。 另外,请勿使用隐式联接语法-它被视为SQL反模式。
DAYS()
CONCAT()
sysdummy1
为了便于阅读,我将日期转换包装在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