これでうまくいきます:
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までの先週の金曜日を見つけるには、次のようにします。
next_day( d1-7, 'FRI')
2を引くと、日数が得られます。同じ日付の場合は0、1週間離れている場合は7などです。
next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')
週に変換:
(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7
最後に、同じ日付の場合は0になりますが、実際には金曜日が1であるため、次のように1つ追加します。
((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1