WEEKDAY()
これは、曜日(0 =月曜日、6 =日曜日)を表す数値と、このクエリを書き直すための簡単な計算を返します。
選択した日付から週を開始する曜日(この場合は4 =木曜日)を減算し、7を加算し、残りを7から取得します。これにより、範囲の開始を取得するために減算する日数が得られます。
同様のロジックが範囲の終了日を計算するために適用されます。
SELECT *
FROM transactions
WHERE DATE(transactionDate)
BETWEEN DATE_SUB(DATE(NOW()), INTERVAL (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
AND DATE_ADD(DATE(NOW()), INTERVAL 6 - (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
ORDER BY transactionDate DESC;
別の開始日については、 4
を平日に置き換えてください クエリで。