MySQL에서 오늘과 내일 날짜의 레코드 조회하기
날짜 데이터가 저장된 열에서 오늘과 내일에 해당하는 레코드만 조회하고 싶은 경우가 종종 있습니다. 이럴 때 MySQL의 CURDATE() 함수와 INTERVAL 키워드를 활용하면 아주 간단하게 해결할 수 있습니다. 예제를 통해 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
AdmissionDate date
);
Query OK, 0 rows affected (0.87 sec)2. 레코드 삽입
INSERT 명령을 사용해 여러 개의 날짜 레코드를 삽입합니다.
mysql> insert into DemoTable values('2019-08-24');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('2019-08-25');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('2019-08-20');
Query OK, 1 row affected (0.24 sec)3. 전체 레코드 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+---------------+ | AdmissionDate | +---------------+ | 2019-08-24 | | 2019-08-25 | | 2019-08-20 | +---------------+ 3 rows in set (0.00 sec)
4. 오늘과 내일 날짜의 레코드만 조회
오늘과 내일 날짜에 해당하는 레코드만 표시하는 쿼리는 다음과 같습니다.
mysql> select *from DemoTable where AdmissionDate IN(curdate(),curdate() + interval 1 day);
실행 결과:
+---------------+ | AdmissionDate | +---------------+ | 2019-08-24 | | 2019-08-25 | +---------------+ 2 rows in set (0.00 sec)
쿼리 동작 원리
CURDATE()는 현재 날짜(오늘)를 반환하며, curdate() + interval 1 day는 오늘 날짜에 하루를 더한 값, 즉 내일 날짜를 반환합니다. WHERE 절에서 IN 연산자를 사용하면 이 두 날짜 중 하나와 일치하는 레코드만 필터링되어 결과로 출력됩니다. 위 예제에서는 2019-08-24(오늘)와 2019-08-25(내일) 두 건만 조회된 것을 확인할 수 있습니다.