【问题标题】:SQL query looking for previous day that doesn't exist查找不存在的前一天的 SQL 查询
【发布时间】:2017-01-07 00:52:42
【问题描述】:

这在技术上适用于 Teradata,但在 SQL 中类似。好吧,在 SQL 查询中可能不会发生同样的错误,如果是这样,也许有 Teradata 经验的人可以回答这个问题。我有一个以以下结尾的查询:

WHERE DB.LOG_DATE > DATE - INTERVAL '6' MONTH;

直到今天它都运行良好,我猜它今天不运行,因为 2 月 30 日不是一件事。不知道是否有一个简单的解决方案,但肯定希望,也许像

WHERE DB.LOG_DATE > ROUND(DATE - INTERVAL '6' MONTH);

或其他。

【问题讨论】:

    标签: sql date teradata


    【解决方案1】:

    这不是 Teradata 逻辑,它是愚蠢的标准 SQL(事实上,您不能对 YEAR 和 MONTH 都使用 INTERVAL 语法)。

    这就是为什么会有 ADD_MONTHS :-)

    WHERE DB.LOG_DATE > ADD_MONTHS(DATE,-6);
    

    【讨论】:

      【解决方案2】:

      从 TD 论坛帖子中获得了解决方案。对于那些在未来偶然发现这一点的人......

      ADD_MONTHS(DATE,-6)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-14
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-21
        • 1970-01-01
        相关资源
        最近更新 更多