여기에서는 MySQL 사용법으로 일정 기간 정해진 기간동안 데이타를 뽑아 오는 MySQL 쿼리를 작성 방법, 즉 데이터 추출 기간 설정 방법에 대해서 알아보도록 하겠습니다.
이전에는 가장 최근 일정 기간 데이터를 뽑아 오도록 최근 기간 데이터 추출 방법을 배워 유용하게 사용하고 있습니다. 이 방법은 유연성이 좋기는 한데요. 글을 쓰다보면 특정 기간 데이타를 보여주시간이 흘러도 그 데이타 및 그래프가 보여줘야 제대로 이해할 수 있는 경우가 있습니다.
예를 들어 미국 경제 분석을 하는데 21년 1분기에서 22년 4분기까지 경제 성장률 예측치를 보여주고 이를 기반해 미국 경제 전망을 이야기한다면 그 페이지에서 보여주는 데이터 및 그래프는 21년 1분기에서 22년 4분기까지 데이터만 보여주는 것이 맞습니다.
이렇세 하기 위해서는 MySQL 쿼리 사용 시 날짜 범위를 정하고 그 범위내에서 데이터를 뽑아오도록 MySQL퀄리를 사용하면 됩니다. 아래에서는 이를 가능케하는 MySQL쿼리 작성 방법을 살펴보도록 하겠습니다.
DATA_SUB와 INTERVAL을 사용
먼저 생각할 수 있는 것은 DATA_SUB와 INTERVAL을 사용하는 방법입니다.
- date : 날짜 형식(DATE)으로 추가한 컬럼 이름
- 2021년 1월 1일에서 2022년 12월 31일 사이의 데이터를 뽑음
WHERE date BETWEEN DATE_SUB('2021-01-01', INTERVAL 1 DAY)
AND '2022-12-31'
Code language: PHP (php)
아래는 이 방법을 실제로 적용한 코드인데요.
SELECT economy_q.`quarter_cy`,
economy_q.`gdp`,
economy_q.`gdp_yoy`,
economy_q.`gdp_qoq`,
economy_q.`gdp_us_yoy`
FROM economy_q
WHERE
economy_q.`country` = 'us'
AND date BETWEEN DATE_SUB('2021-01-01', INTERVAL 1 DAY)
AND '2022-12-31';
Code language: PHP (php)
이러한 코드는 먹히긴 하지만, 이를실행시키면 이상하게 20년 4분기부터 22년 4분기까지 데이터를 보여주더군요. 뭐 유사한 범위내 데이타를 뽑아 주기 때문에 아주 쓸모없지는 않지만 정확한 데이터가 필요한 경우는 사용하기 어려울듯 합니다.
DATE_FORMAT 사용
다음에 사용해 본 방법은 DATE_FORMAT을 사용하는 방법인데요. 기본 공식은 아래와 같습니다.
- date : 날짜 형식(DATE)으로 추가한 컬럼 이름
- 2021년 1월 1일에서 2022년 12월 31일 사이의 데이터를 뽑음
- ORDER BY date desc : 데이터 추출 후 내림차순으로 정렬
WHERE DATE_FORMAT(date,'%Y-%m-%d') between '2021-01-01' and '2022-12-31'
ORDER BY date desc;
Code language: PHP (php)
아래는 이 방법을 실제로 적용한 코드인데요.
SELECT economy_q.`quarter_cy`,
economy_q.`gdp`,
economy_q.`gdp_yoy`,
economy_q.`gdp_qoq`,
economy_q.`gdp_us_yoy`
FROM economy_q
WHERE
economy_q.`country` = 'us'
AND DATE_FORMAT(date,'%Y-%m-%d') between '2021-01-01' and '2022-12-31'
ORDER BY date desc;
Code language: PHP (php)
위 코드는 원하는대로 제대로 먹힙니다.
지시한대로 21년 1분기부터 22년 4분기까지 데이터를 뽑아줍니다.
따라서 일정 기간을 정해놓고 데이터 추출이 필요하다면 이 코드를 사용하면 좋을 것 같습니다.
참고
MySQL 사용법, 데이타베이스 & 테이블 & 컬럼 생성하기
MySQL 사용법, 최근 데이터 조회 방법, 최근 3개월 데이터 등등