Oracle 复杂日期范围

Oracle 复杂日期范围,oracle,date,range,between,Oracle,Date,Range,Between,我正在处理下面的查询,无法找出它的最后一部分。我需要我的查询给我一个前一个业务和前一个业务日减去-28天之间的结果集。e、 g.日期范围在2015年10月28日和2015年10月28日之间-28到目前为止,我写的查询只给出了2015年9月30日的-28天,而不是上一个工作日和上一个工作日之间的范围-28。我的研究表明有几种不同的方法可以做到这一点,但到目前为止,没有一种方法对我有效 SELECT SMBL, SUM(NET_FLOWS/1000000.00) FROM HISTORY WHER

我正在处理下面的查询,无法找出它的最后一部分。我需要我的查询给我一个前一个业务和前一个业务日减去-28天之间的结果集。e、 g.日期范围在2015年10月28日和2015年10月28日之间-28到目前为止,我写的查询只给出了2015年9月30日的-28天,而不是上一个工作日和上一个工作日之间的范围-28。我的研究表明有几种不同的方法可以做到这一点,但到目前为止,没有一种方法对我有效

SELECT SMBL, SUM(NET_FLOWS/1000000.00) 
FROM HISTORY
WHERE DATE - 28 = DATE AND DATE = TO_DATE('10282015','MMDDYYYY') 
AND SYMBOL IN ('AAA','BBB')
GROUP BY SMBL 

首先,日期范围很容易在两者之间使用,因此您可以执行以下快速解决方案:

WHERE DATE BETWEEN (SYSDATE-28) and (SYSDATE-1)
然后你意识到你的日期有时间成分,所以要包括昨天和第28天,你需要:

WHERE DATE >= TRUNC(SYSDATE)-28 
AND   DATE < TRUNC(SYSDATE)
然后我看了看你前一个工作日的规则,然后问-你的工作日是什么?从周一到上周五?还是周六?或者你是一周7天的生意?法定假日怎么样?现在是28个日历日前吗?还是28个工作日


啊,商业规则。魔鬼总是在那些细节中……

从日期'10282015','MMDDYYYY'-28到日期'10282015','MMDDYYYY'之间的日期在哪里?介于两者之间。DATE-28=DATE怎么能解析为真?@MarmiteBomber是的,它起作用了。谢谢你的帮助help@MichaelBroughton这是我公司使用的计算方法。我知道你的意思,但这是我测试的一部分,我需要以这种特定的方式进行测试。@Michaelbrowton有点离题,但我刚刚发现我的结果集应该显示净流量中的前10个值,而不是我在这个查询中寻找的特定符号。你能帮我解决这个问题吗?提前谢谢。请回答您的几个问题。我们是一家周一至周五5个工作日的公司。因此,如果是周一,我们将返回周五的业务日期获取数据。我之所以使用28天,是因为我们在计算中使用了4周的日期范围,因此这就是28天的来源。您对sysdate-28的查询有点不正确,因为我的起点是上一个业务日期,而不是当前日期。但是,只需添加一天,例如sysdate-29,查询就可以正常工作。谢谢。是的,生意-1那么-28。我错过了额外的一天。就像我说的。。。总是一些小细节让你绊倒:-