2014-05-13 3 views
0

데이터 필드와 "기간"필드가있는 테이블이 하나있는 MySQL 데이터베이스가 months - int입니다.MySQL에서 설정 한 날짜 + 월 오프셋으로 행 선택

날짜는 회사에서 프로젝트를 시작할 만기일을 나타냅니다. 그리고 "기간"은 그것이 끝나기까지 걸리는 시간입니다.

주어진 연도에 영향을 줄 행을 선택해야합니다. 따라서 2014 년 보고서를 생성하는 경우 날짜와 기간이 2014 안에 있음과 같은 행을 선택해야합니다.

프로그램 내부에서 쉽게 수행 할 수 있지만이를 수행 할 방법을 찾고 있습니다. 가능하면 쿼리에서

그래서 기본적으로 쿼리의 날짜와 정수를 합산하는 방법이 필요합니다. 여기서 int는 월 수입니다.

의견이 있으십니까?

답변

0

MySQL 및 다른 RDMS 시스템에서 날짜 산술 연산이 쉽습니다. 시작 날짜가 해당 연도 이후가 아니거나 종료 날짜가 해당 연도 이전이 아닌 모든 레코드가 필요합니다.

NOT(YEAR(start_date) > 2014 OR YEAR(start_date + INTERVAL period MONTH) < 2014) 

이 논리적으로 감소

YEAR(start_date) <= 2014 AND YEAR(start_date + INTERVAL period MONTH) >= 2014 

에 따라서이 쿼리는 그것을 할 것입니다 : 즉,이 표현이다.
SELECT whatever, whatever 
    FROM project 
WHERE YEAR(start_date) <= 2014 
    AND YEAR(start_date + INTERVAL period MONTH) >= 2014 
    AND (whatever other selection criteria you have) 

2014 년 전에 시작 그들과 여전히 연말에 진행됩니다 것을 포함하여 2014 년 동안 활약 한 모든 프로젝트를 제공 할 것입니다.

+0

니스, 그게 내가 찾고있는 것입니다. 나는 그것을 여기서 시험 할 것이다. – Victor

+0

죄송합니다. 논리 오류가 발생하여이를 바로 잡았습니다. 두 번 확인해주세요. –

+0

고마워, 나는 그것을 보았다. 그러나 조작은 어쨌든 유용했다. 나는 당신이 여기에서도 그것을 한 것을 보았을 때 나는 바로 잡고 있었다. – Victor