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

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

QA

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

답변 2

본문

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

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

order by ctmValidDate desc

limit 1

위에 나열된 데이타에서 필요한 값은
오늘부터 3개월이후의 데이타중에 가장큰값이라면
(위의 데이타가 전부일경우)
1. 3개월이내의 데이타 리스트
2. 일자별 역순정렬 그중 가장큰값

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

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

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

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

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

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

질문이 명확해야....

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1,543
© SIRSOFT
현재 페이지 제일 처음으로