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