MySQL에서는 생년월일(DOB) 데이터를 활용해 특정 나이 조건에 맞는 레코드를 손쉽게 조회할 수 있습니다. 이 글에서는 CURDATE() 함수와 INTERVAL 연산자를 이용한 실전 예제를 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 생년월일을 저장할 DATE 타입의 컬럼을 가진 테이블을 생성합니다.
mysql> create table DemoTable611 (DOB date); Query OK, 0 rows affected (0.99 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 여러 개의 생년월일 레코드를 추가합니다.
mysql> insert into DemoTable611 values('1996-04-21');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable611 values('2001-01-31');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable611 values('2004-12-21');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable611 values('2000-02-03');
Query OK, 1 row affected (0.14 sec)3. 전체 레코드 확인하기
SELECT 문으로 테이블에 저장된 모든 데이터를 조회해 보겠습니다.
mysql> select *from DemoTable611;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+------------+ | DOB | +------------+ | 1996-04-21 | | 2001-01-31 | | 2004-12-21 | | 2000-02-03 | +------------+ 4 rows in set (0.00 sec)
4. DOB로 나이 조건 조회하기
이제 핵심인 나이 조회 쿼리입니다. 현재 날짜(CURDATE())에서 16년을 뺀 날짜 이후에 태어난 레코드, 즉 만 16세 이하인 사람들만 필터링해 보겠습니다.
mysql> select *from DemoTable611 where DOB >= (CURDATE() - INTERVAL 16 YEAR);
실행 결과는 다음과 같습니다.
+------------+ | DOB | +------------+ | 2004-12-21 | +------------+ 1 row in set (0.00 sec)
5. 참고: TIMESTAMPDIFF로 정확한 나이 계산하기
단순히 조건으로 필터링하는 것뿐 아니라, 각 레코드의 정확한 만 나이를 직접 구하고 싶다면 TIMESTAMPDIFF() 함수를 사용할 수 있습니다.
mysql> select DOB, TIMESTAMPDIFF(YEAR, DOB, CURDATE()) AS Age from DemoTable611;
이 방법을 활용하면 생년월일로부터 현재까지의 연수를 자동으로 계산해 주므로, 회원 관리 시스템이나 연령 제한 기능을 구현할 때 매우 유용합니다. 또한 >= 대신 < 연산자를 사용하면 특정 나이보다 많은 사용자만 조회하는 것도 가능합니다.