我需要获取 DB2 中两个日期之间的天数差异。我尝试了几个不同的查询,但似乎没有任何效果。所以基本上我需要得到的是这样的东西。
SELECT DAYS (CURRENT DATE) - DAYS (DATE(CHDLM)) FROM CHCART00 WHERE CHSTAT = '05';
我知道,如果我删除 CHDLM 并指定一个像“2012-02-20”这样的日期,它会起作用,但我需要能够针对表中的那个字段运行它。我也尝试了一个 friend 给我的这个查询也不起作用。
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()
让我头晕。这是我的看法。
哦,引用 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
关于sql - 计算 DB2 中两个日期之间的天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538632/