MySQL에서 생년월일(DOB)을 기준으로 나이를 계산하려면 TIMESTAMPDIFF() 함수를 사용하면 됩니다. 이 함수는 두 날짜 사이의 차이를 지정한 단위(년, 월, 일 등)로 반환해 주기 때문에 나이 계산에 매우 유용합니다.
TIMESTAMPDIFF() 기본 문법
select TIMESTAMPDIFF(YEAR, yourColumnName, CURRENT_DATE) AS anyAliasName from yourTableName;
그럼 실제 예제를 통해 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> DateOfBirth datetime
-> );
Query OK, 0 rows affected (0.73 sec)
2. 데이터 삽입하기
insert 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(DateOfBirth) values('1998-06-04 12:30:00');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(DateOfBirth) values('2000-01-31 04:10:20');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(DateOfBirth) values('2010-12-01 03:50:45');
Query OK, 1 row affected (0.24 sec)3. 전체 레코드 조회하기
select 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+----+---------------------+
| Id | DateOfBirth |
+----+---------------------+
| 1 | 1998-06-04 12:30:00 |
| 2 | 2000-01-31 04:10:20 |
| 3 | 2010-12-01 03:50:45 |
+----+---------------------+
3 rows in set (0.00 sec)
생년월일로 나이를 구하는 쿼리
다음은 MySQL에서 DOB 컬럼을 이용해 나이를 계산하는 쿼리입니다.
mysql> select TIMESTAMPDIFF(YEAR, DateOfBirth, CURRENT_DATE) AS YourAge from DemoTable;
출력 결과
+---------+
| YourAge |
+---------+
| 21 |
| 19 |
| 8 |
+---------+
3 rows in set (0.00 sec)
정리
TIMESTAMPDIFF(YEAR, ...)는 현재 날짜(CURRENT_DATE)와 생년월일 사이의 연도 차이를 자동으로 계산합니다. 특히 올해 생일이 아직 지나지 않은 경우에는 정확히 1을 빼서 만 나이 기준으로 값을 반환하기 때문에, 복잡한 별도의 계산 없이 간단한 쿼리 하나만으로 정확한 나이를 구할 수 있습니다.