如何选择超过12个月的数据?

时间:2012-12-10 18:41:52

标签: sql oracle

我有一张表格如下;

caravan_id, description, date_purchased, special_instructions, health&safety_check, notes

health&safety_check是一个日期字段。

如何对此表中的数据执行SQL查询,以返回health&safety_check超过12个月的所有行。但是,如果可能的话,基于12个月,而不是今天的日期,例如< 10/12/2011

3 个答案:

答案 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()。

现在()今天意味着。