문제

안녕하세요 여러분, 저는 REC_DATE (Varchar)가 M/D/Y로 저장되어 있고 만료 된 (보다 적은 것과 마찬가지로, 만료 된) 데이터베이스에서 모든 레코드를 뽑으려고 노력하고 있습니다. curdate()), 그리고이 전화는 내가 원하는 것을 제공하지 않습니다.

SELECT member_id, 
       status, 
       DATE_FORMAT(STR_TO_DATE(rec_date, '%m/%d/%Y'), '%Y-%m-%d') AS rec
  FROM members 
 WHERE rec_date > CURDATE() 
   AND status = '1'

나는 분명히 뭔가 잘못하고있다. 그래서 당신은 도울 수 있습니까?

도움이 되었습니까?

해결책

나는 Zerkms와 동의 할 때마다 적절한 데이터 유형을 사용해야한다는 데 동의합니다. 그렇지 않으면, string/varchar를 날짜/시간 데이터 유형으로 먼저 변환하려면 하위 쿼리를 사용해야합니다.

SELECT x.member_id,
       x.status,
       DATE_FORMAT(x.rec_dt, '%Y-%m-%d')
  FROM (SELECT m.member_id,
               m.status,
               STR_TO_DATE(m.rec_date, '%m/%d/%Y') AS rec_dt
          FROM MEMBERS m
         WHERE m.status = '1') x
 WHERE x.rec_dt < CURDATE()

다른 팁

올바른 방법은 데이터를 적절한 필드 유형에 저장하는 것입니다. "Varchar"대신 "Date"유형을 사용하십시오.

어쨌든 - date_format을 사용하여 rec_date를 curdate ()와 비교할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top