学区とその開始日と終了日が記載されたテーブルがあります。
| yrq | start_date | end_date | | -------------------------- | | B233 | 2013-01-07 | 2013-03-23 | | B232 | 2012-09-24 | 2012-12-20 | | B231 | 2012-06-25 | 2012-09-13 | | B124 | 2012-04-02 | 2012-06-21 | | B123 | 2012-01-09 | 2012-03-27 | ..。
yrqを排他的に取得します。つまり、yrqは完全に日付範囲内にあります。
SELECT yrq FROM yrq WHERE start_date>='2012-02-01' AND end_date<='2013-02-01';
B124, B231, B232
日付がと内にある場合でもB233
、最初と最後の年を除くすべてが返されます( ) B123
。行ってもいい!
yrqを包括的に取得する方法を見つけました。つまり、日付がyrqの真ん中にある場合は、それを含めます(「<」と「>」の記号を反転し、開始日と終了日を渡します)。
SELECT yrq FROM yrq WHERE start_date<='2013-02-01' AND end_date>='2012-02-01';
これにより、リストされているすべての四半期が返され、他の四半期は返されません。行ってもいい!
私が問題を抱えているクエリは、開始日と終了日が完全にその中にあるyrqを取得することです。例:日付範囲のyrqを検索したいのです2013-02-01
が2013-02-15
、これはになりますB233
。
クエリを実行するphp関数を呼び出しています。私は包括的フラグを渡していますが、答えがない場合は包括的ケースで結果を返す必要があります。すべての包括的ケースをカプセル化するために、私は最初に答えがないクエリを実行することを計画していました。それが空のセットを返す場合は、上記の包括的クエリを実行します。もっとエレガントな方法があれば、私はすべての耳です。
ありがとう!