通过从运行日期开始的2天加上或减去2天来过滤日期结果

时间:2019-07-10 14:34:26

标签: sql oracle

我是SQL新手。我已经在SQL Developer中创建了一个脚本,然后将其转换为Excel VBA表单以构建一个交互式工具来按需提取此特定报告。效果很好!

现在的问题是,我无法过滤日期结果以仅显示实际日期的前2天,最后是实际日期的后2天。

SQL代码:

Select p.prdord PO, q.actdat,P.itmcod Finished_Item, p.SPCCD1 Feeder_Item,
       p.expqty Qty_Needed, p.PENDQTY Amount_Pulled, p.actqty Still_needed
from PORECIPE p join
     prdque q
     on p.prdord = q.prdord 
order by p.prdord

1 个答案:

答案 0 :(得分:0)

此代码是当前+ 2天的基于Oracle的过滤:

SELECT 
  p.prdord PO, 
  q.actdat,
  p.itmcod Finished_Item, 
  p.spccd1 Feeder_Item,
  p.expqty Qty_Needed, 
  p.pendqty Amount_Pulled, 
  p.actqty Still_needed

FROM 
  porecipe p 
  INNER JOIN prdque q on p.prdord = q.prdord
WHERE
  q.actdat BETWEEN SYSDATE-2 AND SYSDATE+2

ORDER BY p.prdord

它假定actdat是您的“实际日期”列。如果不是,请在WHERE子句中使用其他列名。请记住,BETWEEN是包容性的,因此,如果此报告在1月3日正好是下午6点运行,它将包含从1日下午6点到5日下午6点的所有记录。如果有记录,例如不应包含5日下午6点,例如使用改为q.actdat > SYSDATE-2 AND q.actdat < SYSDATE+2

编辑

您要求删除周末,将其添加到where子句:

AND TRUNC (q.actdat) - TRUNC (q.aftdat, 'IW') < 5 

从字面上看,它将删除q.actdat是周六或周日的所有结果

但是,如果您想在2个工作日至2个工作日之间获得结果,则涉及的内容会更多一些-如果可以,请发表评论