2012-06-16 6 views
0
나는 다음과 MySQL의 쿼리를

내부 값이 모든 행을 선택MySQL의 쿼리는 날짜 범위

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

나는 t 질문 하시다 있습니다. 필드에 cpl_startdatecpl_enddate 필터를 설정하고 싶습니다. 예를 들어 사용자가 필터 cpl_startdate = '2012-01-01'cpl_enddate = '2012-12-31'을 설정하면 해당 범위 사이에 날짜가있는 모든 행을 출력해야합니다. 위의 예제를 사용하면 처음 두 행을 선택한 날짜 범위에 있기 때문에 출력해야합니다.

나는 운없이
.. WHERE scp.cpl_startdate <= '2012-01-01' AND scp.cpl_enddate >= '2012-12-31' 

..

을 시도했다. 어떻게 든 MySQL 구문 BETWEEN을 사용할 수 있습니까?

또한 두 날짜 범위 사이의 날짜를 계산할 수 있습니까? 스팬 사이에 일 수의 INT를 출력하고 싶습니다. 반드시 동일한 쿼리에 ..

답변

2

스위치 주변의 비교 표시 :

.. WHERE scp.cpl_startdate >= '2012-01-01' AND scp.cpl_enddate <= '2012-12-31' 

는 주어진 행의 시작과 끝 날짜 사이의 일 수를 계산하려면 당신의 선택 문이 추가 :

DATEDIFF(scp.cpl_enddate, scp.cpl_startdate) AS DaysDifference 

DATEDIFF (expr1, expr2)는 expr1 - expr2의 날짜 차이를 반환합니다. 자세한 내용은 MySQL documentation을 참조하십시오.

+0

Perfect. 고맙습니다. – David