2026, 새로운 도약을 시작합니다.

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

2108919728_1666228776.7391.png

위와 같은 구조의 db에서

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

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

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

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

답변 2개

채택된 답변
+20 포인트

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

order by ctmValidDate desc

limit 1

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

답변에 대한 댓글 3개

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

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

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

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

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

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

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

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

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

질문이 명확해야....

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

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

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

로그인
🐛 버그신고