0

bookings以下のように、mysql予約テーブルに予約があります。

start_date = 2013-03-04
end_date = 2013-03-08

特定の日 (この場合は 2013-03-04) が予約の開始日と終了日の間にあるかどうかを確認したい - しかし、開始日に 1 日を加算し、終了日から 1 日を減算したい日にち。

したがって、 2013-03-04と 2013-03-08 の間で検索する代わりに、2013-03-05 と 2013-03-07検索 たい

次のクエリは、終了日から 1 日を減算しますが、開始日は 04 のままにします。以下の検索では結果が得られないはずですが、開始日として 04 を使用しているため、その予約の結果が返されます。[05] [06] [07] とすべきときは、基本的に [04] [05] [06] [07] の間を検索します。

$fd_query_params = array( 
    ':day' => '2013-03-04
);

$query = " 
    SELECT 
        *
    FROM 
        bookings as bb 
    WHERE 
        :day BETWEEN 
        DATE_ADD(bb.start_date, INTERVAL 1 DAY) 
        AND 
        DATE_SUB(bb.end_date, INTERVAL 1 DAY)
";
4

1 に答える 1

0

私自身はphpの専門家ではありませんが、:day文字列が一重引用符で囲まれているだけであることに気付くよりも多くあるはずです。start_date と end_date が何であるかを確認するために出力を確認するとよいでしょう。

于 2013-03-14T22:13:28.077 に答える