复杂的日期范围

Complex Date Range

我正在处理以下查询,但无法弄清楚它的最后一部分。我需要我的查询为我提供前一个营业日和前一个营业日减去 (-) 28 天之间的结果集。 (例如日期范围在 10/28/2015 和 10/28/2015 -28 之间)到目前为止我写的查询只给我第 -28 天(09/30/2015)而不是之前业务之间的范围日和前一个工作日 -28。我的研究显示了几种不同的方法,到目前为止 none 对我有用。

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 

首先,日期范围很容易使用 BETWEEN,因此您可以快速解决:

WHERE DATE BETWEEN (SYSDATE-28) and (SYSDATE-1)

然后你意识到你的日期有时间成分,所以要包括昨天的所有时间和第 28 天的所有时间,你需要:

WHERE DATE >= TRUNC(SYSDATE)-28 
AND   DATE < TRUNC(SYSDATE)

然后我看看你的规则 "previous BUSINESS day" 并问 - 你的工作日是什么时候?周一去上周五?还是星期六?还是您每周工作 7 天?法定节假日怎么办?现在是 28 CALENDAR 天了吗?还是 28 个工作日?

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