我有一张表格如下;
caravan_id, description, date_purchased, special_instructions, health&safety_check, notes
health&safety_check
是一个日期字段。
如何对此表中的数据执行SQL查询,以返回health&safety_check
超过12个月的所有行。但是,如果可能的话,基于12个月,而不是今天的日期,例如< 10/12/2011
答案 0 :(得分:4)
类似的东西:
select *
from t
where add_months("health&safety_check", 12) < sysdate
我假设您不想硬编码当前日期,但很高兴为其使用变量。
Jeff在评论中提出了一个很好的观点(尽管在Oracle中,您可以在函数上创建索引,以便解决问题)。这很容易解决:
where "health&safety_check" <add_months(sysdate, -12)
答案 1 :(得分:4)
select *
from t
where "health&safety_check" < add_months(sysdate, -12)
答案 2 :(得分:0)
您可以使用此查询:
SELECT *
FROM table_name
WHERE `health&safety_check` < ADDDATE(NOW(), INTERVAL -12 MONTH)
ADDDATE(NOW(),INTERVAL -12 MONTH)表示此日期减去12个月,您可以使用其他日期字段或变量来更改NOW()。
现在()今天意味着。