0

土曜日には試合がありますが、毎週末ではありません。次の土曜日に次の試合がある場合は、新しい週に表示したい.

このようなことを考えていたので、月曜日が月曜日の場合は 6 日先をチェックし、土曜日に試合がある場合はそれを見つける必要があります。しかし、もちろん部品が不足しています。現時点では、1 か月先の次の試合が検索されますが、その週に試合がある場合にのみ表示されます。

"Select * From games Where date > DATE_ADD(CURDATE(),INTERVAL 6 DAY)"
4

2 に答える 2

0

PHP のDateTimeクラスを使用して、次の土曜日の日付を見つけることができます。

$nextSaturday = new DateTime('next Saturday');

そこから、日付が等しい場所を選択するだけで、$nextSaturday->format('Y-m-d')次の土曜日の試合 (ある場合) を見つけることができます。

于 2012-04-27T12:58:33.990 に答える
0

データベースにフェッチするように依頼したいのは、実際には「今後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
}
于 2012-04-27T13:12:44.003 に答える