Вместо да използвате WEEKDAY използвайте WEEKOFYEAR
SELECT WEEKOFYEAR(date) AS week, date
FROM myTable
WHERE date BETWEEN start_date AND end_date
ORDER BY week
АКТУАЛИЗАЦИЯ Този въпрос е източникът
SELECT (WEEK(date, 5) -
WEEK(DATE_SUB(date, INTERVAL DAYOFMONTH(date) - 1 DAY), 5) + 1) as week, date
FROM myTable
WHERE date BETWEEN start_date AND end_date
ORDER BY week
АКТУАЛИЗАЦИЯ 2
SELECT (WEEK(date, 1) -
WEEK(DATE_SUB(date, INTERVAL DAYOFMONTH(date) - 1 DAY), 1) + 1) as week, date
FROM myTable
WHERE date BETWEEN start_date AND end_date
ORDER BY week