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

MySQL CURDATE()로 날짜 목록에서 오늘 날짜 레코드 조회하기

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() 함수를 사용하는 것이 적합합니다.