sql - 计算 DB2 中两个日期之间的天数?

标签 sql database db2

我需要获取 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/

相关文章:

sql - 我无法在我的项目中上传文件

mysql - 根据行数据插入或更新

database - 如何改善 kdb 中的选择时间

sql - C 中的 DB2 嵌入式 SQL 对输入和输出使用相同的主变量是否允许?

java - Hibernate可以将空字符串默认为空字符串吗

mysql - 计算给定列中具有字符 A、B、C 的条目数

mysql - SQL多对多计数求和

sql - 类似旧时代access的小型独立SQL数据库(即文件数据库)

javascript - 如何在 angular2 数据表中添加行号或序列号

db2 - 是否有可用于 DB2 驱动程序的 JavaDoc?