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

MySQL에서 IF() 함수를 활용해 마감일과 현재 날짜 조건을 확인하는 방법

MySQL에서 마감일(duedate)이 현재 날짜보다 이전인지, 또는 NULL 값인지 같은 조건을 확인하려면 IF() 함수를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 마감일과 현재 날짜(CURDATE())를 비교하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 마감일을 저장할 테이블을 생성합니다.

mysql> create table demo89
    -> (
    -> duedate date
    -> );
Query OK, 0 rows affected (0.78 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 여러 개의 날짜 레코드를 입력합니다. 의도적으로 NULL 값도 함께 넣어 다양한 경우를 테스트해 보겠습니다.

mysql> insert into demo89 values('2020-01-10');
Query OK, 1 row affected (0.55 sec)

mysql> insert into demo89 values(null);
Query OK, 1 row affected (0.13 sec)

mysql> insert into demo89 values('2020-11-29');
Query OK, 1 row affected (0.15 sec)

mysql> insert into demo89 values('2019-11-29');
Query OK, 1 row affected (0.09 sec)

3. 저장된 데이터 확인하기

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

mysql> select *from demo89;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+------------+
| duedate    |
+------------+
| 2020-01-10 |
| NULL       |
| 2020-11-29 |
| 2019-11-29 |
+------------+
4 rows in set (0.00 sec)

4. IF() 함수로 마감일 유효성 검사하기

이제 핵심 부분입니다. 아래 쿼리는 IF() 함수와 CURDATE()(현재 날짜) 함수를 조합하여 각 레코드의 마감일이 유효한지 검사합니다.

  • 마감일이 NULL이거나
  • 마감일이 현재 날짜보다 이전이면

'Wrong Date'라는 문자열을 반환하고, 그렇지 않으면 원래의 마감일 값을 그대로 출력합니다.

mysql> select if (duedate is null
    -> or duedate < curdate(),'Wrong Date',duedate) as Result
    -> from demo89;

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

+------------+
| Result     |
+------------+
| Wrong Date |
| Wrong Date |
| 2020-11-29 |
| Wrong Date |
+------------+
4 rows in set (0.00 sec)

결과 해석

출력 결과를 보면 '2020-11-29'만 유효한 날짜로 표시되고, 나머지 세 개의 레코드는 모두 'Wrong Date'로 반환된 것을 확인할 수 있습니다.

  • 2020-01-10: 현재 날짜보다 이전이므로 'Wrong Date'
  • NULL: 값이 없으므로 'Wrong Date'
  • 2020-11-29: 현재 날짜 이후의 유효한 마감일이므로 날짜 그대로 출력
  • 2019-11-29: 현재 날짜보다 이전이므로 'Wrong Date'

이처럼 IF() 함수와 CURDATE() 함수를 함께 사용하면 만료된 날짜나 누락된 날짜 데이터를 손쉽게 필터링하고 검증할 수 있습니다. 실무에서는 이 로직을 WHERE 절에 응용하여 유효한 기한 내의 레코드만 조회하는 데 활용할 수 있습니다.