SQL 查询查找不存在的前一天
SQL query looking for previous day that doesn't exist
这在技术上适用于 Teradata,但在 SQL 中类似。好吧,在 SQL 查询中可能不会发生同样的错误,如果是这样,也许有 Teradata 经验的人可以回答这个问题。我有一个以以下结尾的查询:
WHERE DB.LOG_DATE > DATE - INTERVAL '6' MONTH;
直到今天它都运行良好,我猜它今天不起作用,因为 2 月 30 日不是问题。不确定是否有一个简单的解决方案,但肯定希望,也许是
WHERE DB.LOG_DATE > ROUND(DATE - INTERVAL '6' MONTH);
或者随便什么。
从 TD 论坛获得解决方案 post。对于那些将来遇到这个问题的人......
ADD_MONTHS(日期,-6)
这不是 Teradata 逻辑,它是愚蠢的标准 SQL(事实上,您不能对 YEAR 和 MONTH 使用 INTERVAL 语法)。
这就是 ADD_MONTHS :-)
的原因
WHERE DB.LOG_DATE > ADD_MONTHS(DATE,-6);
这在技术上适用于 Teradata,但在 SQL 中类似。好吧,在 SQL 查询中可能不会发生同样的错误,如果是这样,也许有 Teradata 经验的人可以回答这个问题。我有一个以以下结尾的查询:
WHERE DB.LOG_DATE > DATE - INTERVAL '6' MONTH;
直到今天它都运行良好,我猜它今天不起作用,因为 2 月 30 日不是问题。不确定是否有一个简单的解决方案,但肯定希望,也许是
WHERE DB.LOG_DATE > ROUND(DATE - INTERVAL '6' MONTH);
或者随便什么。
从 TD 论坛获得解决方案 post。对于那些将来遇到这个问题的人......
ADD_MONTHS(日期,-6)
这不是 Teradata 逻辑,它是愚蠢的标准 SQL(事实上,您不能对 YEAR 和 MONTH 使用 INTERVAL 语法)。
这就是 ADD_MONTHS :-)
的原因WHERE DB.LOG_DATE > ADD_MONTHS(DATE,-6);