यह यह करेगा:
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 यदि वे एक ही तिथि हैं, 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