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

MySQL에서 현재 날짜보다 이전 날짜 데이터 조회하는 방법

MySQL에서 현재 날짜보다 작은 날짜 선택하기

MySQL에서 특정 테이블에 저장된 날짜(datetime) 값 중 현재 날짜보다 이전인 데이터만 조회하고 싶다면, WHERE 절과 NOW() 함수를 함께 사용하면 됩니다. 아래 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성

먼저 datetime 타입의 컬럼을 가진 테이블을 생성합니다.

mysql> create table DemoTable1877
  (
  DueDate datetime
  );
Query OK, 0 rows affected (0.00 sec)

2. 샘플 데이터 삽입

INSERT 문을 사용하여 여러 개의 날짜 레코드를 입력합니다.

mysql> insert into DemoTable1877 values('2019-12-10');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1877 values('2019-12-05');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1877 values('2019-12-07');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1877 values('2019-12-09');
Query OK, 1 row affected (0.00 sec)

3. 전체 데이터 확인

SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.

mysql> select * from DemoTable1877;

실행 결과는 다음과 같습니다.

+---------------------+
| DueDate             |
+---------------------+
| 2019-12-10 00:00:00 |
| 2019-12-05 00:00:00 |
| 2019-12-07 00:00:00 |
| 2019-12-09 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

4. 현재 날짜 확인

CURDATE() 함수로 MySQL 서버의 현재 날짜를 확인할 수 있습니다. 이 예제에서는 현재 날짜가 2019-12-08입니다.

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2019-12-08 |
+------------+
1 row in set (0.00 sec)

5. 현재 날짜보다 이전 날짜 조회하기

핵심은 WHERE 절에서 비교 대상 컬럼을 NOW() 함수와 비교하는 것입니다. NOW()는 현재 날짜와 시간을 반환하므로, datetime 타입 컬럼과 정확하게 비교할 수 있습니다.

mysql> select * from DemoTable1877 where DueDate < now();

위 쿼리의 실행 결과는 다음과 같습니다.

+---------------------+
| DueDate             |
+---------------------+
| 2019-12-05 00:00:00 |
| 2019-12-07 00:00:00 |
+---------------------+
2 rows in set (0.00 sec)

정리

현재 날짜 기준으로 과거 데이터만 필터링하려면 다음과 같은 조건을 사용합니다.

  • WHERE 컬럼명 < NOW() — 현재 날짜·시간보다 이전인 모든 레코드 조회
  • WHERE DATE(컬럼명) < CURDATE() — 시간을 제외한 순수 날짜 기준으로 오늘 이전 데이터 조회

NOW()는 날짜와 시간을 모두 포함하여 비교하기 때문에, 마감일(due date)이 지난 항목을 찾거나 만료된 데이터를 걸러내는 등 실무에서 매우 유용하게 활용됩니다.