여러 날짜 중 만료일 검색 쿼리 채택완료
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년 전
�
플래토
3년 전
3개월이내에 가장큰 값에는 위의 결과가 맞는데요
기간제한을 걸고 그값이 아니라고하면 기대하는 결과는 어떤건가요?
기간제한을 걸고 그값이 아니라고하면 기대하는 결과는 어떤건가요?
�
플래토
3년 전
위에 나열된 데이타에서 필요한 값은
오늘부터 3개월이후의 데이타중에 가장큰값이라면
(위의 데이타가 전부일경우)
1. 3개월이내의 데이타 리스트
2. 일자별 역순정렬 그중 가장큰값
여기서 오늘의 기준이 검색하는 현재일자(2022-10-21)인경우 데이타는 없습니다.
검색하는 기준일자가 2022-10-01인경우 2022-10-14일자 한개만 3개월이내의 데이타에 해당되고
그것만 추출되는게 정상입니다.
원하는 결과값에따라 쿼리는 천차만별 달라질수있으니, 어떤값을원하는지 잘 판단해보세요
오늘부터 3개월이후의 데이타중에 가장큰값이라면
(위의 데이타가 전부일경우)
1. 3개월이내의 데이타 리스트
2. 일자별 역순정렬 그중 가장큰값
여기서 오늘의 기준이 검색하는 현재일자(2022-10-21)인경우 데이타는 없습니다.
검색하는 기준일자가 2022-10-01인경우 2022-10-14일자 한개만 3개월이내의 데이타에 해당되고
그것만 추출되는게 정상입니다.
원하는 결과값에따라 쿼리는 천차만별 달라질수있으니, 어떤값을원하는지 잘 판단해보세요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
하지만 subquery여서 limit 1을 사용못합니다.