특정 기간 데이터 조회 경험
배경
최근 특정 기간 데이터를 조회API를 만들면서 날짜 데이터 조회 경험로 어려움을 느꼈습니다.
이번에는 특정 날짜 데이터를 조회하는 sql을 작성하려고 합니다.
SELECT * FROM table WHERE date(created_at) BETWEEN '2021-06-01' AND '2021-06-22'
SELECT * FROM table WHERE created_at BETWEEN '2021-06-01' AND '2021-06-22'
두 SQL중 2021/6/1 부터 2021/6/22 까지
(특정 날짜)로 데이터를 조회하는 SQL은 어떤 것일까요?
지금부터는 실제로 mysql 환경에서 table을 작성하고 결과를 확인하려고 합니다.
실제로 해보기
created_at 컬럼에 데이터는 날짜와 시간을 모두 포함합니다.
SELECT id, created_at FROM table;
id | created_at |
---|---|
1 | 2012-06-01 00:00:00 |
2 | 2012-06-01 23:59:59 |
3 | 2012-06-22 23:59:59 |
SELECT id, created_at FROM table where created_at BETWEEN '2021-06-01' AND '2021-06-22';
id | created_at |
---|---|
1 | 2012-06-01 00:00:00 |
2 | 2012-06-01 23:59:59 |
created_at
은날짜
와시간
모두 포함'2021-06-01'
형태 는날짜
만 나타내기 때문에시간
데이터는'00:00:00'
이다'2021-06-01 00:00:00' 부터'2021-06-22 00:00:00'의 범위 조회
(6/1일 하루의 데이터만 조회)
SELECT id, created_at FROM table where date(created_at) BETWEEN '2021-06-01' AND '2021-06-22'
id | created_at |
---|---|
1 | 2012-06-01 00:00:00 |
2 | 2012-06-22 23:59:59 |
date(created_at)
은날짜
만 포함date()
함수를 통해 created_at 의날짜
를 비교했을때2012-06-01
부터'2012-06-02`를 포함하는 모든 데이터 값 조회'2021-06-01 00:00:00' 부터'2021-06-30 23:59:59'의 범위 조회
(6/1~6/2일까지 데이터 조회)
결론
- where절에서
Mysql BETWEEN a AND b
를 사용해 a와 b를 포함하는 모든 데이터를 조회한다. - 기 간을 조회시 조건이
날짜
형식인지날짜+시간
인지 주의한다. - 조회할 데이터가
날짜
형식일때 조회할날짜+시간
데이터를 date()를 통해날짜
형식으로 바꿔 조회할 수 있다.