2012-04-27 4 views
0

土曜日にはゲームが行われますが、週末には行われません。私は土曜日に次の試合がある場合、新しい週に見たいと思っています。次の試合に行く、月曜日に表示

私は前日に6日前にチェックすると、土曜日にそれを見つけるべきゲームがあれば、このようなことを考えていました。しかし、もちろんそれは部品が欠けています、ただのスタートですが、私は立ち往生しています。今のところ、1ヶ月先の次の試合を見つけると、その週が1つしかない場合にのみ表示されます。

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

答えて

0

あなたは次土曜日の日付を見つけるために、PHPのDateTimeクラスを使用することができます。

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

そこから、ちょうど日が土曜日のためのゲーム(もしあれば)を見つけるために$nextSaturday->format('Y-m-d')に等しい選択します。あなたが取得するためにデータベースをお願いしたいと思いますどのような

+0

私のようなものを使用したいその可能であれば:

その場合、あなたは、PHPのDateTimeオブジェクトを使用してのようなものをやって(またはcronジョブに全体をいじる)drrcknlsnのソリューションとの方がいいでしょうおそらく、それは可能でしょうか?たぶん、strtotime()やmktime()を使って、ある間隔で検索してください。 – user1225840

+0

@ user1225840:それはまったく問題ではありません。 [getTimestamp() 'メソッド(http://us3.php.net/manual/en/datetime.gettimestamp.php)を使用します。 '$ nextSaturday-> getTimestamp()'です。 – FtDRbwLXw6

+0

ありがとうございます! – user1225840

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 

のようなものをd。

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 
} 
+0

pplが事前にチケットを購入できるように、そのゲームを月曜日に表示したいとしますか?それから、現在の日付は月曜日でなければなりませんが、これをどのように設定するのですか?DAYOFWEEK(日付)を使用できますか? – user1225840

+0

現在の日付はなぜ重要なのでしょうか?このクエリが取り出すものは、クエリが行われる日付が月曜日、火曜日、水曜日のいずれであっても、次の6日間で起こる_ゲーム_です。それとも**あなたは月曜日にクエリを実行したいだけですか?この場合、アプリケーション層でフィルタリングする必要があります(SQLが月曜日でなければSQLが実行されないようにするか、 'AND DAYOFWEEK(CURDATE())= 2'などをクエリに追加する必要があります)。 – CD001

+0

ありがとうございます! – user1225840

関連する問題