본문 바로가기
MySql

MySQL datetime 및 php를 사용하여 1 일, 7 일 및 30 일 전 mysql db에서 레코드 선택

by 베이스 공부 2020. 11. 17.
반응형

다음 쿼리를 사용하여 현재 시간보다 정확히 X 일 오래된 결과를 타겟팅합니다.

SELECT  *,
        DATE_FORMAT(datetime, '%m/%d/%Y') 
   FROM table 
  WHERE datetime BETWEEN SYSDATE() - INTERVAL 30 DAY 
                     AND SYSDATE() 
ORDER BY ID DESC

문제는 정확히 30 일 전의 레코드가 존재하지 않는 경우 당일부터 데이터를 반환하는 것입니다.

이 작업을 수행하는 더 좋은 방법이 있습니까?

 

해결 방법

 

BETWEEN 은 양쪽 끝에있는 값을 포함하여 두 인수 사이의 모든 값을 포함합니다. 즉, BETWEEN 1 AND 4 에는 값 1, 2, 3, 4가 포함됩니다. 1과 4뿐 아니라 2와 3도 포함되지 않습니다.

30 일 전의 날짜를 원하면 다음을 시도하십시오.

SELECT  *,
        DATE_FORMAT(datetime, '%m/%d/%Y') 
   FROM table 
  WHERE DATE(datetime) = CURDATE() - INTERVAL 30 DAY 
ORDER BY ID DESC

CURDATE () 는 시간 구성 요소없이 날짜를 반환하므로 SYSDATE () 대신 CURDATE () 를 사용하십시오.

 

참조 페이지 https://stackoverflow.com/questions/3283358

 

 

반응형

댓글