Použijte DAYOFWEEK ve vašem dotazu něco jako:
SELECT * FROM mytable WHERE MONTH(event_date) = 5 AND DAYOFWEEK(event_date) = 7;
Zde najdete všechny informace o sobotách v květnu.
Chcete-li získat nejrychlejší čtení uložit denormalizované pole, které je dnem v týdnu (a cokoli dalšího, co potřebujete). Tímto způsobem můžete indexovat sloupce a vyhnout se úplnému prohledávání tabulky.
Zkuste nejprve výše uvedené, abyste zjistili, zda to vyhovuje vašim potřebám, a pokud ne, přidejte další sloupce a uložte data pro zápis. Dejte si pozor na anomálie aktualizace (pokud změníte datum_události, nezapomeňte aktualizovat sloupec day_of_week).
Všimněte si, že denormalizovaná pole prodlouží čas potřebný k zápisu, zvýší počet výpočtů při zápisu a zaberou více místa. Ujistěte se, že tuto výhodu opravdu potřebujete a můžete měřit, že vám pomáhá.