SELECT COUNT(DAYNAME='FRIDAY') WHERE date between 2020-05-05 AND 2020-06-09
Without Depend on any tables
I try to use build in function but I don't now how I get it
SELECT COUNT(DAYNAME='FRIDAY') WHERE date between 2020-05-05 AND 2020-06-09
Without Depend on any tables
I try to use build in function but I don't now how I get it
You have to be a little creative, see: DBFIDDLE
set @start = '2020-05-05'; -- Tuesday
set @end = '2020-06-29'; -- Monday
with recursive dates as (
select
cast(@start as DATE) as FromDate,
1 as NumberOfDays
union all
select
FromDate,
NumberOfDays+1
from dates where NumberofDays < DATEDIFF(@end,@start)+1
)
select
FromDate,
DAYNAME(FromDate) as NameFrom,
DATE_ADD(FromDate, INTERVAL NumberOfDays DAY) as ToDate,
DAYNAME(DATE_ADD(FromDate, INTERVAL NumberOfDays DAY)) as NameTo,
DAYOFWEEK(DATE_ADD(FromDate, INTERVAL NumberOfDays DAY)) as DOW,
round(datediff(DATE_ADD(FromDate, INTERVAL NumberOfDays DAY), FromDate)/7,0)
+ CASE WHEN DayOfWEEK(DATE_ADD(FromDate, INTERVAL NumberOfDays DAY))=6 THEN 1 ELSE 0 END as Fridays
from dates
NOTE:
If testing all cases is OK you can do:
set @start = '2020-05-05'; -- Tuesday
set @end = '2020-06-29'; -- Monday
SELECT
@start as FromDate,
@end as ToDate,
round(datediff(@end, @start)/7,0)
+ CASE WHEN DayOfWEEK(@end)=6 THEN 1 ELSE 0 END as Fridays;