Najpierw musisz obliczyć, ile dni temu był ostatni poniedziałek, używając DAYOFWEEK
funkcji, a następnie odejmij ją od bieżącej daty -
SELECT * from table
WHERE date >= DATE_SUB(CURDATE(),INTERVAL MOD(DAYOFWEEK(CURDATE())-2,7) DAY)
AND date <= DATE_ADD(CURDATE(), INTERVAL MOD(7 - (DAYOFWEEK(CURDATE()) - 1), 7) DAY)
Nie jestem w 100% pewien liczb +/-, ale powinieneś być w stanie to wypracować
EDYCJA:Jeśli to będzie uruchamiane tylko w niedzielę pod koniec okresu, istnieje znacznie prostsza wersja -
SELECT * from table
WHERE date >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
AND date <= CURDATE()