假设所有产品在10年内过期
如何列出将在2个月内过期的产品?
table product
--------------------------------
food | ManufacturedDate|
--------------------------------
apple | 12-nov-11
orange | 12-jan-12
pear | 12-jan-12
milk | 12-nov-11
mango | 12-nov-11 输出
orange | 12-jan-12
pear | 12-jan-12 发布于 2012-11-12 22:50:22
您的数据显示,除pear+orange外的其他数据将于今天到期,因此假设您想要排除今天到期的数据,并包括2个月内到期的数据:
SQL> select food, manufacturedate, add_months(manufacturedate,12) expiry_date from product where add_months(manufacturedate, 12) <= add_months(trunc(sysdate), 2) and add_months(manufacturedate, 12) > trunc(sysdate);
FOOD MANUFACTU EXPIRY_DA
--------------- --------- ---------
orange 12-JAN-12 12-JAN-13
pear 12-JAN-12 12-JAN-13或者是一种对索引更友好的方式(删除列侧的函数):
SQL> select food, manufacturedate, add_months(manufacturedate,12) expiry_date from product where manufacturedate <= add_months(trunc(sysdate), -10) and manufacturedate > add_months(trunc(sysdate), -12);
FOOD MANUFACTU EXPIRY_DA
--------------- --------- ---------
orange 12-JAN-12 12-JAN-13
pear 12-JAN-12 12-JAN-13发布于 2012-11-12 22:45:27
尝试:
select *
from product
where add_months( trunc(ManufacturedDate), 12 ) >= trunc(SYSDATE)
and add_months( trunc(ManufacturedDate), 12) <= add_months(trunc(SYSDATE), 2);https://stackoverflow.com/questions/13345583
复制相似问题