我有两个日期,比如2-Mar-16
和22-Aug-16
,我想确定日期25在此期间发生了多少次。我怎么能创建这样的查询?
答案 0 :(得分:1)
以下查询将为您提供日期范围内25的出现次数。 逻辑我写的内联。
select substr(DAT,1,2) numbr,count (substr(DAT,1,2)) --- Filtering only day part of date and counting it
from
(
--Generating all the dates between 2 dates
select to_date('02-Mar-2016','dd-mm-yyyy') + LEVEL DAT
from dual
connect by level < (select ABS (to_date('02-Mar-2016','dd-mm-yyyy') - to_date('22-Aug-2016','dd-mm-yyyy') )
from dual)
)
where substr(DAT,1,2) = 25
group by substr(DAT,1,2);
答案 1 :(得分:0)
使用MONTHS_BETWEEN获取两个日期之间的完整月份数。如果值是示例中的整数,那么您需要检查左右日期中的给定日期是否为25.如果是,请在结果中添加1。
如果日期不同,则需要计算MONTHS_BETWEEN
的最低限度,并检查左右日期之间是否有25日。例如,在3月23日和4月26日之间,我们通过全月搜索找到了第25个,但是从23&lt; 25&lt; 26,我们需要添加一个。
此答案假设您已经过了较早的日期。如果这不准确,那么你必须知道MONTHS_BETWEEN
的结果是否定的,你需要相应地调整这里描述的想法。