如何在一段时间内获得特定日期

时间:2016-08-22 07:05:16

标签: java sql oracle

我有两个日期,比如2-Mar-1622-Aug-16,我想确定日期25在此期间发生了多少次。我怎么能创建这样的查询?

2 个答案:

答案 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的结果是否定的,你需要相应地调整这里描述的想法。