我试图在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
。
我想排除或忽略该行,但不知道如何。那怎么办呢?
或者也许有其他解决方案?
THX
答案 0 :(得分:0)
找到解决方案 - 第二个子句被重写为:
(
age > 45
AND (birth_dt + INTERVAL '44' YEAR + INTERVAL '365' DAY) > issue_dt
)
:) 看起来像臭虫..
答案 1 :(得分:0)
当某人在2月29日出生时,添加45年将导致无效日期(由于标准SQL中的愚蠢规则),例如
void MyRectangle::paint(QPainter *painter, const QStyleOptionGraphicsItem
*option, QWidget *widget)
{
QRectF rec = boundingRect();
//code to fill blured background fill
}
永远不要添加/减去INTERVAL MONTH / YEAR,总是使用ADD_MONTHS
date '1972-02-29' + interval '45' year = '2017-02-29' = invalid date