データベースにフェッチするように依頼したいのは、実際には「今後6日間以内のすべてのゲーム」です
SELECT * FROM `games` WHERE `date` >= CURDATE()
AND `date` <= DATE_ADD(CURDATE, INTERVAL 6 DAY)
...または使用できますBETWEEN
...
SELECT * FROM `games` WHERE `date`
BETWEEN CURDATE()
AND DATE_ADD(CURDATE(), INTERVAL 6 DAY)
[編集]
質問のタイトルで「月曜日に表示する」という意味を理解したところで...実際には月曜日にクエリを実行したいだけです:)
したがって、月曜日にのみクエリを実行AND DAYOFWEEK(CURDATE()) = 2
するか (アプリケーション レベルで実行)、または を含むクエリを実行して、次のようにします。
SELECT * FROM `games` WHERE `date` >= CURDATE()
AND `date` <= DATE_ADD(CURDATE, INTERVAL 6 DAY)
AND DAYOFWEEK(CURDATE()) = 2
必要がない場合でも常にクエリを実行するため、これはかなり非効率的ですが、アプリケーションで月曜日にのみ実行する方がよいでしょう。
DateTime
その場合、PHPのオブジェクトを使用して次のようなことを行う(またはすべてをCronジョブに変更する)drrcknlsnのソリューションを使用することをお勧めします。
if(date("N") == 1) {
$oNextSaturday = new DateTime('next Saturday');
$sFetchUpcomingGames = "SELECT * FROM `games` WHERE `date` = '{$oNextSaturday->format('Y-m-d')}'";
//execute the database query and perform relevant outputs, and so on
}