Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 특정 기간(날짜 범위) 사이의 데이터 조회하기 – 날짜 비교 쿼리 완벽 가이드

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일'로 지정하는 방식도 함께 검토해 보시기 바랍니다.