MySQL에서 날짜 데이터가 저장된 테이블에서 오늘(현재 날짜)에 해당하는 레코드만 조회하고 싶다면 CURDATE() 함수를 활용하면 됩니다. 이 글에서는 테이블 생성부터 데이터 삽입, 그리고 현재 날짜와 일치하는 레코드를 추출하는 쿼리까지 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 날짜를 저장할 DemoTable을 생성합니다. DueDate 컬럼은 DATE 타입으로 선언했습니다.
mysql> create table DemoTable -> ( -> DueDate date -> ); Query OK, 0 rows affected (1.35 sec)
2. 샘플 데이터 삽입하기
INSERT 문을 사용해 여러 개의 날짜 데이터를 입력합니다.
mysql> insert into DemoTable values('2019-06-14');
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable values('2019-06-15');
Query OK, 1 row affected (0.64 sec)
mysql> insert into DemoTable values('2019-06-16');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('2018-01-16');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable values('2018-07-16');
Query OK, 1 row affected (0.53 sec)3. 전체 데이터 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+------------+ | DueDate | +------------+ | 2019-06-14 | | 2019-06-15 | | 2019-06-16 | | 2018-01-16 | | 2018-07-16 | +------------+ 5 rows in set (0.00 sec)
4. 현재 날짜와 일치하는 레코드 조회하기
오늘 날짜에 해당하는 레코드만 가져오려면 WHERE 절에서 DATE(DueDate) 값과 CURDATE() 함수의 반환값을 비교하면 됩니다.
mysql> select *from DemoTable where DATE(DueDate)=CURDATE();
현재 시스템 날짜가 2019-06-16이라면 아래와 같이 해당 날짜의 레코드 하나만 반환됩니다.
+------------+ | DueDate | +------------+ | 2019-06-16 | +------------+ 1 row in set (0.03 sec)
참고 사항
CURDATE()는 현재 날짜를 'YYYY-MM-DD' 형식으로 반환하는 MySQL 내장 함수입니다.DueDate컬럼이 DATETIME 타입인 경우에도DATE(DueDate)로 날짜 부분만 추출해 비교할 수 있습니다.- 시간 정보까지 비교하려면
NOW()함수를 사용하는 것이 적합합니다.