이전 달의 모든 행을 가져 오는 쿼리
지난달에 생성 된 데이터베이스의 모든 행을 선택해야합니다.
예를 들어, 현재 월이 1 월이면 12 월에 생성 된 모든 행을 반환하고 2 월이면 1 월에 생성 된 모든 행을 반환하려고합니다. date_created
데이터베이스에 다음 형식으로 생성 된 날짜를 나열 하는 열이 2007-06-05 14:50:17
있습니다..
SELECT * FROM table
WHERE YEAR(date_created) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
AND MONTH(date_created) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
또 다른 대안이 있습니다. 인덱스 DATE
또는 DATETIME
형식 필드 가 있다고 가정하면 형식이 지정된 날짜가 인덱스가 사용되기 전에 형식이 변환되므로 인덱스를 사용해야합니다. 그러면 EXPLAIN으로 볼 때 range
쿼리가 아닌 index
쿼리가 표시됩니다 .
SELECT
*
FROM
table
WHERE
date_created >= DATE_FORMAT( CURRENT_DATE - INTERVAL 1 MONTH, '%Y/%m/01' )
AND
date_created < DATE_FORMAT( CURRENT_DATE, '%Y/%m/01' )
미래 날짜가없는 경우 ...
SELECT *
FROM table_name
WHERE date_created > (NOW() - INTERVAL 1 MONTH);
테스트되었습니다.
다른 방법에 hobodave의 대답
SELECT * FROM table
WHERE YEAR(date_created) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
AND MONTH(date_created) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
YEAR_MONTH를 단위로 사용하여 EXTRACT로 동일한 결과를 얻을 수 있으므로 다음과 같이 AND가 필요하지 않습니다.
SELECT * FROM table
WHERE EXTRACT(YEAR_MONTH FROM date_created) = EXTRACT(YEAR_MONTH FROM CURDATE() - INTERVAL
1 MONTH)
SELECT *
FROM yourtable
where DATE_FORMAT(date_created, '%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 1 month),'%Y-%m')
이것은 지난 30 일 또는 31 일 동안의 기록과는 반대로 지난달의 모든 기록을 반환해야합니다.
이 질문에 대한 답은 이미 선택되었지만 가장 간단한 쿼리는
SELECT *
FROM table
WHERE
date_created BETWEEN (CURRENT_DATE() - INTERVAL 1 MONTH) AND CURRENT_DATE();
다음은 지난달의 레코드를 가져 오는 쿼리입니다.
SELECT *
FROM `tablename`
WHERE `datefiled`
BETWEEN DATE_SUB( DATE( NOW( ) ) , INTERVAL 1
MONTH )
AND
LAST_DAY( DATE_SUB( DATE( NOW( ) ) , INTERVAL 1
MONTH ) )
감사합니다-saqib
select fields FROM table WHERE date_created LIKE concat(LEFT(DATE_SUB(NOW(), interval 1 month),7),'%');
이것은 필드 값에 변환 함수를 적용하지 않기 때문에 date_created가 인덱싱 된 경우 인덱스를 활용할 수 있습니다.
WHERE created_date >= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY)
AND created_date <= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)), INTERVAL 0 DAY)
이것은 나를 위해 일했습니다 (이번 달에 쿼리를 실행 한 날짜에 관계없이 지난달에 생성 된 모든 레코드 선택)
참고 URL : https://stackoverflow.com/questions/2090221/query-to-get-all-rows-from-previous-month
'developer tip' 카테고리의 다른 글
인스턴스 수준에서 메서드 재정의 (0) | 2020.10.25 |
---|---|
LR (0)과 SLR 구문 분석의 차이점은 무엇입니까? (0) | 2020.10.25 |
Twitter Bootstrap으로 테이블에 스타일 적용 (0) | 2020.10.25 |
GitHub 커밋은 'Your Contributions'캘린더에 기록되지 않습니다. (0) | 2020.10.25 |
Bash에서 실행 된 마지막 명령을 반향합니까? (0) | 2020.10.25 |