Udělá to:
select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
from data
Možná bude nejlepší, když to rozeberu. Funkce NEXT_DAY vrátí následující den, který je (v tomto případě pátek) po datum.
Takže najít první pátek po d1 by bylo:
next_day( d1, 'FRI')
Ale pokud je d1 pátek, který by se vrátil následující pátek, upravíme:
next_day( d1-1, 'FRI')
Podobně, abychom našli poslední pátek až do d2 včetně, děláme:
next_day( d1-7, 'FRI')
Odečtením 2 získáte počet dní:0, pokud se jedná o stejné datum, 7, pokud je mezi nimi týden atd.:
next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')
Převést na týdny:
(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7
Nakonec, pokud jsou stejné datum, dostaneme 0, ale ve skutečnosti je 1 pátek, a tak dále, takže přidáme jeden:
((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1