![](/img/trans.png)
[英]Teradata: Error 2621 while converting the value - how to find bad characters?
[英]Teradata 15: Error 2666 einvalid date) - How to find the broken value?
我试图在WHERE
子句中使用以下条件:
WHERE birth_dt IS NOT NULL
AND issue_dt IS NOT NULL
AND(
(
age>20
AND (birth_dt + INTERVAL '20' YEAR) > issue_dt
)
OR
(
age > 45
AND (birth_dt + INTERVAL '45' YEAR) > issue_dt
))
收到以下错误:
SELECT Failed. 2666: Invalid date supplied for cldata.birth_dt.
如果我评论条件的第二部分( OR age > 45... etc
),则它正常工作。 所以我得出结论,在该间隔上有一行,其值为birth_dt
损坏了。 我想排除或忽略该行,但不知道如何。 那么该怎么做呢? 也许还有其他解决方案? 谢谢
找到解决方案-第二个子句被这样重写:
(
age > 45
AND (birth_dt + INTERVAL '44' YEAR + INTERVAL '365' DAY) > issue_dt
)
:)好像是bug ..
当某人在2月29日出生时,加上45岁将导致无效的日期(由于Standard SQL中的愚蠢规则),例如
date '1972-02-29' + interval '45' year = '2017-02-29' = invalid date
请勿添加/减去INTERVAL MONTH / YEAR,而应始终使用ADD_MONTHS
add_months(date '1972-02-29', 45*12) = '2017-02-28'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.