WITH RECURSIVE dates AS (
SELECT DATE('2005-07-01') AS dt
UNION ALL
SELECT DATE_ADD(dt, INTERVAL 1 DAY)
FROM dates
WHERE dt < '2005-07-31'
)
SELECT COUNT(*) AS weekend_days
FROM dates
WHERE DAYOFWEEK(dt) IN (1, 7);
;
show status like 'Last_query_cost';