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

MySQL에서 날짜가 지났는지 확인하는 방법 – CURDATE() 비교 쿼리 완벽 정리

MySQL에서 날짜 경과 여부 확인하기

MySQL에서 특정 날짜(예: 마감일)가 이미 지났는지 아직 남아 있는지 확인하려면, 저장된 DATE 컬럼의 값과 CURDATE() 함수가 반환하는 현재 날짜를 비교하면 됩니다. 이 글에서는 테이블 생성부터 실제 쿼리 실행까지 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 마감일(Deadline)을 저장할 DATE 타입의 컬럼을 가진 테이블을 생성합니다.

mysql> create table DemoTable1340
    -> (
    -> Deadline date
    -> );
Query OK, 0 rows affected (0.43 sec)

2단계: 샘플 데이터 삽입

INSERT 명령을 사용해 여러 개의 날짜 레코드를 삽입합니다.

mysql> insert into DemoTable1340 values('2019-09-18');
Query OK, 1 row affected (0.52 sec)
mysql> insert into DemoTable1340 values('2019-09-23');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1340 values('2018-12-24');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1340 values('2016-11-01');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1340 values('2019-09-28');
Query OK, 1 row affected (0.18 sec)

3단계: 전체 레코드 조회

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

mysql> select * from DemoTable1340;

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

+------------+
| Deadline   |
+------------+
| 2019-09-18 |
| 2019-09-23 |
| 2018-12-24 |
| 2016-11-01 |
| 2019-09-28 |
+------------+
5 rows in set (0.00 sec)

4단계: 현재 날짜 확인

날짜를 비교하려면 기준이 되는 오늘 날짜를 알아야 합니다. MySQL에서는 CURDATE() 함수로 현재 날짜를 손쉽게 구할 수 있습니다.

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

현재 날짜는 2019-09-21입니다.

5단계: 날짜가 지났는지 확인하는 쿼리

아직 지나지 않은 날짜, 즉 오늘 또는 미래의 마감일만 조회하려면 >= 연산자와 함께 CURDATE()를 비교 조건으로 사용합니다.

mysql> select * from DemoTable1340 where Deadline >= curdate();

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

+------------+
| Deadline   |
+------------+
| 2019-09-23 |
| 2019-09-28 |
+------------+
2 rows in set (0.00 sec)

핵심 정리 및 응용 팁

  • 마감일이 남아 있는 레코드 조회: WHERE Deadline >= CURDATE()
  • 이미 지난 날짜(기한 만료) 조회: WHERE Deadline < CURDATE()
  • 오늘 날짜 포함 여부: >=는 오늘 날짜도 결과에 포함하고, <는 제외합니다.

이처럼 CURDATE()와 비교 연산자만 활용하면 별도의 복잡한 함수 없이도 날짜 경과 여부를 간단하게 판별할 수 있습니다. 참고로 시간(시·분·초)까지 함께 비교해야 하는 경우에는 NOW() 함수나 TIMESTAMP 타입을 사용하는 것이 좋습니다.