MySQL에서 두 날짜 사이에 속한 데이터를 조회하려면 >=(크거나 같음)와 <=(작거나 같음) 비교 연산자를 함께 사용하거나, 더 간결하게 BETWEEN 절을 활용할 수 있습니다. 이번 글에서는 실제 예제를 통해 날짜 범위 비교 쿼리를 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 날짜 데이터를 저장할 테이블을 생성합니다.
mysql> create table DemoTable
(
AdmissionDate date
);
Query OK, 0 rows affected (0.73 sec)2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 여러 개의 날짜 레코드를 입력합니다.
mysql> insert into DemoTable values('2019-08-31');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('2019-09-01');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2019-05-10');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('2019-06-12');
Query OK, 1 row affected (0.25 sec)3. 전체 데이터 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+---------------+ | AdmissionDate | +---------------+ | 2019-08-31 | | 2019-09-01 | | 2019-05-10 | | 2019-06-12 | +---------------+ 4 rows in set (0.00 sec)
4. 날짜 범위 비교 쿼리 실행하기
아래 쿼리는 비교 연산자를 사용해 2019년 6월 1일부터 8월 31일 사이의 날짜만 조회하는 예제입니다.
mysql> select *from DemoTable where AdmissionDate >='2019-06-01' and AdmissionDate <='2019-08-31';
실행 결과는 다음과 같습니다.
+---------------+ | AdmissionDate | +---------------+ | 2019-08-31 | | 2019-06-12 | +---------------+ 2 rows in set (0.00 sec)
조건에 해당하는 두 개의 레코드(2019-08-31, 2019-06-12)만 정상적으로 반환된 것을 확인할 수 있습니다.
5. BETWEEN 절로 더 간단하게 작성하기
동일한 결과를 얻으려면 BETWEEN 절을 사용하는 것이 코드 가독성 면에서 더 좋습니다.
mysql> select *from DemoTable where AdmissionDate between '2019-06-01' and '2019-08-31';
BETWEEN은 시작 날짜와 종료 날짜를 모두 포함(양 끝값 포함)하므로, 위의 >=, <= 조합과 완전히 동일하게 동작합니다.
정리
MySQL에서 날짜 범위를 비교할 때는 다음 두 가지 방법을 기억하면 됩니다.
- 비교 연산자:
WHERE 컬럼 >= '시작날짜' AND 컬럼 <= '종료날짜' - BETWEEN 절:
WHERE 컬럼 BETWEEN '시작날짜' AND '종료날짜'
두 방식 모두 경계 날짜를 포함하므로 상황에 맞게 선택해 사용하면 됩니다. 참고로 DATETIME 타입 컬럼을 다룰 때는 시간 정보까지 고려해야 하므로, 종료 조건을 < '종료날짜 + 1일'로 지정하는 방식도 함께 검토해 보시기 바랍니다.