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

MySQL에서 타임스탬프(Timestamp) 컬럼 기준으로 데이터 조회 후 부울(Boolean) 값 설정하기

MySQL에서 타임스탬프 컬럼의 값을 조건에 따라 판별하여 부울(Boolean) 형태로 반환하려면 IF() 함수를 활용하면 됩니다. 이번 글에서는 예제 테이블을 만들고, 날짜 조건에 따라 0 또는 1의 값을 반환하는 방법을 단계별로 살펴보겠습니다.

1. 현재 날짜 확인하기

먼저 CURDATE() 함수를 사용해 현재 날짜를 확인합니다.

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

2. 테이블 생성하기

타임스탬프 타입의 컬럼을 가진 테이블을 생성합니다.

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

3. 데이터 삽입하기

INSERT 명령어를 사용해 여러 개의 레코드를 테이블에 추가합니다.

mysql> insert into DemoTable1890 values('2017-12-10');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1890 values('2021-12-10');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1890 values('2018-04-24');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1890 values('2020-05-11');
Query OK, 1 row affected (0.00 sec)

4. 전체 데이터 조회하기

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

mysql> select * from DemoTable1890;

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

+---------------------+
| DueDate             |
+---------------------+
| 2017-12-10 00:00:00 |
| 2021-12-10 00:00:00 |
| 2018-04-24 00:00:00 |
| 2020-05-11 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

5. 타임스탬프 기준으로 부울 값 설정하기

이제 핵심 쿼리입니다. IF() 함수와 INTERVAL 연산자를 조합하여, 마감일(DueDate)이 현재 날짜로부터 2년 이내인지 여부에 따라 상태 값을 1 또는 0으로 반환합니다.

mysql> select if(DueDate > curdate() - interval 2 year,false,true) as Status from DemoTable1890;

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

+--------+
| Status |
+--------+
|      1 |
|      0 |
|      0 |
|      0 |
+--------+
4 rows in set (0.00 sec)

쿼리 동작 원리

위 쿼리는 curdate() - interval 2 year로 현재 날짜에서 2년 전 시점을 계산한 뒤, 각 레코드의 DueDate가 그 시점보다 큰지(즉, 최근 2년 이내인지)를 판단합니다. 조건이 참이면 true(1), 거짓이면 false(0)를 반환하여 결과를 부울 값으로 손쉽게 확인할 수 있습니다. 이 방식은 만료 여부 확인, 활성/비활성 상태 구분 등 다양한 실무 시나리오에 유용하게 활용할 수 있습니다.