复杂的日期范围
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 个工作日?
啊商业规则。魔鬼总是在那些细节中....
我正在处理以下查询,但无法弄清楚它的最后一部分。我需要我的查询为我提供前一个营业日和前一个营业日减去 (-) 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 个工作日?
啊商业规则。魔鬼总是在那些细节中....