programing

MySQL을 사용하여 뉴스 테이블에서 지난 6개월을 선택하는 방법

coolbiz 2022. 10. 5. 23:06
반응형

MySQL을 사용하여 뉴스 테이블에서 지난 6개월을 선택하는 방법

테이블의 마지막 6개월 엔트리를 선택하려고 합니다.datetime이라는 컬럼이 있는데, 이것은 datetime mysql 형식입니다.

인터벌 등의 방법을 많이 봐왔는데, 어떤 방법을 사용하는 것이 좋을까요?감사해요.

DATE_SUB 사용

 .... where yourdate_column > DATE_SUB(now(), INTERVAL 6 MONTH)

이것을 시험해 보세요.

select *
  from table 
 where your_dt_field >= date_sub(now(), interval 6 month);

쿼리 읽기: 다음 항목의 모든 항목 제공table여기서 엔트리 날짜에 대응하는 필드는 6개월보다 최신입니다.

지난 6개월의 데이터는 뺄셈을 통해 얻을 수 있습니다.interval of 6 month부터CURDATE()(CURDATE()오늘 날짜를 반환하는 MySQL 함수입니다).

SELECT * FROM table 
         WHERE your_date_field >= CURDATE() - INTERVAL 6 MONTH;

또는 를 사용할 수 있습니다.BETWEENMySQL 연산자는 다음과 같습니다.

SELECT * FROM table 
         WHERE your_date_field BETWEEN CURDATE() - INTERVAL 6 MONTH AND CURDATE();

@user3198 answer를 사용하여 지난 6개월간의 매출을 표시하려고 했는데, 효과가 있었습니다만, 가장 오래된 달에 한 가지 문제가 있었습니다.그 달의 매출액은 알 수 없습니다.결과는 해당 달의 현재 날짜부터 시작됩니다.

관심 있는 사람이 있으면 제 솔루션을 공유하겠습니다.-

yourdate_column > DATE_SUB(now(), INTERVAL 7 MONTH)
limit 6

또, 제 케이스 J에 대해서, 보다 좋은 해결책을 가지고 있는 사람이 있으면 좋겠습니다.

TIMESTAMPDIFF 를 사용할 수도 있습니다.

    TIMESTAMPDIFF(MONTH, your_date_column, now()) <= 6 )

이것은 MariaDB와 함께 사용하고 있기 때문에 솔루션인 것 같습니다.WHERE 조항을 참조하십시오.

SELECT MONTH(yourTimestampOrDateColumn) AS MONTH, USER, ActionID, COUNT(*) AS TOTAL_ACTIONS, ROUND(SUM(totalpoints)) AS TOTAL_PTS
FROM MyTable
WHERE MONTH(yourTimestampOrDateColumn) BETWEEN MONTH(CURDATE() - INTERVAL 6 MONTH) AND MONTH(CURDATE())
GROUP BY MONTH;

query Results(쿼리 결과)

이미지에는 사용자가 DB에 실제 데이터를 기록한 달만 표시됩니다(따라서 6개월이 아닌 4개월만 표시됨).

이번 달은 10일(10월), 6개월 전은 4개월(4월)이므로 쿼리는 그 간격(4~10)을 찾습니다.

언급URL : https://stackoverflow.com/questions/8941377/how-to-select-last-6-months-from-news-table-using-mysql

반응형