在SQL中使用存储的日期和sysdate

时间:2014-05-08 17:48:40

标签: sql oracle

我正在尝试编写一个查询,该查询返回库存中已经存放超过30天的所有产品。

我试图写的查询是这样的..返回所有30天以前有delivery_date的产品。

这是我到目前为止所做的......但我不认为它是正确的方式。

select product_id, stock_lvl, delivery_date
  from inventory
  where select trunc(sysdate) - ?????? > 30
  order by product_id;

1 个答案:

答案 0 :(得分:3)

你可以更简单:

select * from inventory where inv_input_dt < sysdate - 30

这里有优点:

  1. 您可能在inventory_input_date上有一个索引,它可以由DB使用。当您对列进行一些计算时,它不能被使用,例如&#34; inv_input_dt - sysdate&gt; 30&#34;

  2. &#34; sysdate - 30&#34;只计算一次,而不是表中每条记录的计算