首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DB2使用多个日期间隔的标记持续时间无效

问DB2使用多个日期间隔的标记持续时间无效
EN

Stack Overflow用户
提问于 2018-11-26 14:27:07
回答 1查看 1K关注 0票数 0

我正在尝试重构一个MySQL查询,以便在DB2/iSeries上运行,并且我得到了错误使用标记的持续时间无效。

看一看文档,我觉得下面的用法应该是有效的。

我是不是遗漏了什么?

代码语言:javascript
复制
SELECT
    IFNULL(SUM(CASE WHEN CURDATE() BETWEEN n.start_date AND n.expire_date
                    THEN 1 ELSE 0 END), 0) AS current,
    IFNULL(SUM(CASE WHEN CURDATE() -  365 DAY BETWEEN n.start_date AND n.expire_date
                    THEN 1 ELSE 0 END), 0) AS prior,
    IFNULL(SUM(CASE WHEN '2018-12-31' -  7 DAY BETWEEN n.start_date AND n.expire_date
                    THEN 1 ELSE 0 END), 0) AS full
FROM salesnumbers;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-26 14:32:38

问题可能是您的日期间隔。尝试使用CURRENT DATE而不是CURDATE()。此外,您还可以在DB2中直接列出日期间隔+/-某个金额。

代码语言:javascript
复制
SELECT
    COUNT(CASE WHEN CURRENT DATE BETWEEN n.start_date AND n.expire_date
               THEN 1 END) AS current,
    COUNT(CASE WHEN CURRENT DATE -  1 YEAR BETWEEN n.start_date AND n.expire_date
               THEN 1 END) AS prior,
    COUNT(CASE WHEN DATE('2018-12-31') - 7 DAY BETWEEN n.start_date AND n.expire_date
               THEN 1 END) AS full
FROM salesnumbers;

请注意,我用条件计数替换了您的条件和。这使代码稍微简洁一些,因为我们不必详细说明一个显式的ELSE条件(默认情况是NULL)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53483227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档