Vous devez utiliser la fonction DAYOFWEEK
Si la fin de la semaine du samedi, n'importe quelle date peut être transformée en samedi.
Par exemple, cela calcule le samedi à venir
SELECT DATE(NOW() + INTERVAL (7 - DAYOFWEEK(NOW())) DAY);
Ceci calcule le dimanche à venir (vous devez utiliser la fonction WEEKDAY à la place)
SELECT DATE(NOW() + INTERVAL (6 - WEEKDAY(NOW())) DAY);
Pour une table appelée mytable avec une colonne de date appelée theDate, votre somme serait
samedi
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (7 - DAYOFWEEK(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
dimanche
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (6 - WEEKDAY(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
Essaie !!!
CAVEAT si vous voulez une fin de semaine autre que le samedi et le dimanche, j'ai écrit un algorithme fou le 22 septembre 2011 pour calculer n'importe quelle semaine commençant et se terminant n'importe quel jour .
RolandoMySQLDBA
la source