테스트 사이트 - 개발 중인 베타 버전입니다

여러 날짜 중 만료일 검색 쿼리 채택완료

Chamcode 3년 전 조회 1,969

위와 같은 구조의 db에서

제가 검색하려는건 유효기간이 제일 긴 날짜이면서 유효기간 종료일이 3개월 이내인 글입니다.

select ciSeq from safe_inspect_info where ctmValidDate BETWEEN DATE_ADD(NOW(),INTERVAL -3 MONTH ) AND NOW())

이렇게 했더니 2022-10-14일 날짜가 나옵니다. 하지만 유효기간이 제일 길지 않기 때문에 나오면 안됩니다.

쿼리어떻게 작성해야 하나요?

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
플래토
3년 전

WHERE date(ctmValidDate) between curdate() and date_add(curdate(), interval 3 month)

order by ctmValidDate desc

limit 1

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

C
Chamcode
3년 전
답변 감사합니다
하지만 subquery여서 limit 1을 사용못합니다.
플래토
3년 전
3개월이내에 가장큰 값에는 위의 결과가 맞는데요

기간제한을 걸고 그값이 아니라고하면 기대하는 결과는 어떤건가요?
플래토
3년 전
위에 나열된 데이타에서 필요한 값은
오늘부터 3개월이후의 데이타중에 가장큰값이라면
(위의 데이타가 전부일경우)
1. 3개월이내의 데이타 리스트
2. 일자별 역순정렬 그중 가장큰값

여기서 오늘의 기준이 검색하는 현재일자(2022-10-21)인경우 데이타는 없습니다.

검색하는 기준일자가 2022-10-01인경우 2022-10-14일자 한개만 3개월이내의 데이타에 해당되고
그것만 추출되는게 정상입니다.

원하는 결과값에따라 쿼리는 천차만별 달라질수있으니, 어떤값을원하는지 잘 판단해보세요

댓글을 작성하려면 로그인이 필요합니다.

3년 전

만든 쿼리는 오늘 부터 이전 3개월을 찾는 것인데 

나오면 안됩니다. <-- 이 말과 

유효기간 종료일이 3개월 이내인<--이 말을 종합하면 오늘 부터 3개월 후인 것 중에 가장 큰 값을 찾는 것 아닌가요?

질문이 명확해야....

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인