这在技术上适用于Teradata,尽管它在SQL中类似。好吧,在SQL查询中可能不会发生同样的错误,如果是这样,也许有Teradata经验的人可以回答这个问题。我有一个以:
结尾的查询WHERE DB.LOG_DATE > DATE - INTERVAL '6' MONTH;
直到今天才工作正常,我猜它今天不起作用,因为2月30日不是一件事。不确定是否有一个简单的解决方案,但肯定希望,可能像
WHERE DB.LOG_DATE > ROUND(DATE - INTERVAL '6' MONTH);
或者其他什么。
答案 0 :(得分:2)
这不是Teradata逻辑,它是愚蠢的标准SQL(实际上你不能在YEAR和MONTH使用INTERVAL语法)。
这就是ADD_MONTHS的原因: - )
WHERE DB.LOG_DATE > ADD_MONTHS(DATE,-6);
答案 1 :(得分:0)
从TD论坛帖子中获得解决方案。对于那些在未来绊脚石的人......
ADD_MONTHS(DATE,-6)