我在Oracle SQL中并不是很好,但我试图查看类似这样的日期
例如:2000年1月1日
我如何检查是否已经过了30天,还有60个月等等。 基本上我需要制定一个月后会恢复的条件,依此类推。我可以逐一检查它,但它显然不好。
DECLARE
appn_date DATE;
BEGIN
appn_date := Trunc(TO_DATE ('10-AUG-2016'));
IF (appn_date = trunc(sysdate) - interval '30' day) THEN
DBMS_OUTPUT.PUT_LINE('Yes');
ELSE
DBMS_OUTPUT.PUT_LINE('No');
END IF;
END;
它应该输出Yes,因为已经过了30天,但它也会在60天,90天后输出Yes,依此类推。我认为modulo会对此有所帮助。任何想法?
答案 0 :(得分:1)
要检查该列的值是否早于30天,请使用:
where the_date_column <= sysdate - interval '30' day
或稍短但相同
where the_date_column <= sysdate - 30
您需要使用add_months()
where the_date_column <= add_months(sysdate, -60);
由于Oracle DATE
不是真正的“日期”而是“日期时间”,您可能需要trunc()
(对于两者:日期列和sysdate
)如果您不是想要考虑时间的一部分。