回答:
DAYOFWEEK関数を使用する必要があります
週末が土曜日の場合、任意の日付を土曜日にモーフできます。
たとえば、これは次の土曜日を計算します
SELECT DATE(NOW() + INTERVAL (7 - DAYOFWEEK(NOW())) DAY);
次の日曜日を計算します(代わりにWEEKDAY関数を使用する必要があります)
SELECT DATE(NOW() + INTERVAL (6 - WEEKDAY(NOW())) DAY);
theDateという日付列を持つmytableというテーブルの場合、合計は次のようになります。
土曜日
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (7 - DAYOFWEEK(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
日曜日
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (6 - WEEKDAY(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
試してみる !!!
土曜日と日曜日以外の週末が必要な場合は、CAVEATを使用して、2011年9月22日に、週の開始日と終了日を計算する非常識なアルゴリズムを作成しました。