Detta kommer att göra det:
select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
from data
Kanske bäst om jag bryter ner det. Funktionen NEXT_DAY returnerar nästa dag som är en (fredag i detta fall) efter datumet.
Så att hitta den första fredagen efter d1 skulle vara:
next_day( d1, 'FRI')
Men om d1 är en fredag som skulle återkomma följande fredag, så vi justerar:
next_day( d1-1, 'FRI')
På samma sätt för att hitta den sista fredagen till och med d2 gör vi:
next_day( d1-7, 'FRI')
Att subtrahera 2:an ger ett antal dagar:0 om de är samma datum, 7 om det är en veckas mellanrum och så vidare:
next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')
Konvertera till veckor:
(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7
Slutligen, om de är samma datum får vi 0, men egentligen finns det 1 fredag, och så vidare, så vi lägger till en:
((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1