如何使用oracle sql中的select语句查找两个日期(包括两个日期)之间的星期五数?

最佳答案

可以做到这一点:

select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
from data

如果我把它分解最好。 NEXT_DAY函数返回第二天,该日期是日期之后的(在本例中为星期五)

因此,找到d1之后的第一个星期五将是:
next_day( d1, 'FRI')

但是,如果d1是星期五,而星期五将返回下一个星期五,那么我们进行调整:
next_day( d1-1, 'FRI')

同样,要查找直到d2并包括d2的最后一个星期五,我们可以执行以下操作:
next_day( d1-7, 'FRI')

减去2得到的天数:如果它们是相同的日期,则为0;如果它们相隔一周,则为7,依此类推:
next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')

转换为周:
(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7

最后,如果它们是相同的日期,我们将得到0,但实际上是1个星期五,依此类推,所以我们添加一个:
((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1

关于sql - 两个日期之间的星期五数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4967808/

10-12 18:29