次のMySQLクエリがあります:
SELECT
s.student_socialnr, s.student_lastname, s.student_firstname,
cs.city_name,
scp.cpl_startdate, scp.cpl_enddate, scp.cpl_invoice,
cu.customer_name, scp.cpl_coursename
FROM students s
INNER JOIN studentcourseplan scp ON scp.student_id = s.student_id
INNER JOIN cityselections cs ON cs.city_id = s.student_city_id
INNER JOIN customers cu ON cu.customer_id = s.student_customer_id
これにより、次のようなものが出力されます。
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
| student_socialnr | student_lastname | student_firstname| city_name | cpl_startdate | cpl_enddate | cpl_invoice | customer_name | cpl_coursename |
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
| 000000-0000 | Doe | John | Dallas | 2012-06-01 | 2012-06-30 | 1337 | The customer | The course |
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
| 000000-0000 | Johnsson | Derp | Texas | 2012-02-01 | 2012-07-28 | 5000 | The customer | The course |
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
| 000000-0000 | Derpina | Lisa | New York | 2013-01-01 | 2013-04-01 | 2001 | The customer | The course |
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
2 つの質問があります。cpl_startdate
フィールドとにフィルターを設定できるようにしたいと思いますcpl_enddate
。たとえば、ユーザーがフィルターcpl_startdate = '2012-01-01'
を設定するとcpl_enddate = '2012-12-31'
、その範囲内の日付を持つすべての行が出力されます。したがって、上記の例を使用すると、選択した日付範囲にあるため、最初の 2 行のみを出力する必要があります。
私は試した
.. WHERE scp.cpl_startdate <= '2012-01-01' AND scp.cpl_enddate >= '2012-12-31'
.. 運が悪い。BETWEEN
どうにか
して MySQL 構文を使用できますか?
また、2 つの日付範囲の間の日数を数えることは可能ですか? スパン間の日数の INT を出力したいと思います。必ずしも同じクエリではありません..