MySQL에서 두 날짜 범위 사이의 데이터 조회 방법
MySQL에서 특정 두 날짜 사이에 속한 모든 데이터를 조회하려면 BETWEEN 연산자를 사용하면 됩니다. 기본 문법은 다음과 같습니다.
select * from yourTableName where yourColumnName between yourDateValue1 and yourDateValue2;
BETWEEN 연산자는 시작 날짜와 종료 날짜를 모두 포함하여 범위 내의 레코드를 반환합니다. 실제 예제를 통해 살펴보겠습니다.
1. 테이블 생성하기
먼저 직원 정보를 저장할 테이블을 생성합니다.
mysql> create table DemoTable1422
-> (
-> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeName varchar(20),
-> EmployeeJoiningDate date
-> );
Query OK, 0 rows affected (0.69 sec)위 테이블은 직원 ID, 이름, 입사일 세 개의 컬럼으로 구성되어 있습니다.
2. 샘플 데이터 삽입하기
INSERT 문을 사용해 테이블에 여러 레코드를 추가합니다.
mysql> insert into DemoTable1422(EmployeeName,EmployeeJoiningDate) values('John','2017-09-28');
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable1422(EmployeeName,EmployeeJoiningDate) values('Chris','2019-09-29');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1422(EmployeeName,EmployeeJoiningDate) values('Bob','2018-01-31');
Query OK, 1 row affected (0.55 sec)
mysql> insert into DemoTable1422(EmployeeName,EmployeeJoiningDate) values('Sam','2018-12-21');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1422(EmployeeName,EmployeeJoiningDate) values('Mike','2019-11-10');
Query OK, 1 row affected (0.11 sec)3. 전체 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1422;
실행 결과는 다음과 같습니다.
+------------+--------------+---------------------+ | EmployeeId | EmployeeName | EmployeeJoiningDate | +------------+--------------+---------------------+ | 1 | John | 2017-09-28| | 2 | Chris | 2019-09-29| | 3 | Bob | 2018-01-31| | 4 | Sam | 2018-12-21| | 5 | Mike | 2019-11-10| +------------+--------------+---------------------+ 5 rows in set (0.00 sec)
4. BETWEEN으로 날짜 범위 조회하기
이제 두 날짜 사이의 데이터만 선택하는 쿼리를 실행합니다. 아래 예제는 2018년 9월 29일부터 2019년 9월 29일 사이에 입사한 직원을 조회합니다.
mysql> select * from DemoTable1422 where EmployeeJoiningDate between '2018-09-29' and '2019-09-29';
실행 결과는 다음과 같습니다.
+------------+--------------+---------------------+ | EmployeeId | EmployeeName | EmployeeJoiningDate | +------------+--------------+---------------------+ | 2 | Chris | 2019-09-29 | | 4 | Sam | 2018-12-21| +------------+--------------+---------------------+ 2 rows in set (0.00 sec)
결과를 보면 지정한 범위 내에 있는 Chris(2019-09-29)와 Sam(2018-12-21) 두 명의 직원만 조회된 것을 확인할 수 있습니다. 참고로 BETWEEN 연산자는 양 끝 날짜 값을 포함(inclusive)하므로, 정확히 시작일이나 종료일에 해당하는 레코드도 결과에 함께 반환됩니다.