MySQL에서 생년월일로 나이 계산하기
MySQL에서는 DATE_FORMAT() 함수를 활용하면 생년월일을 기준으로 나이를 간단하게 계산할 수 있습니다. 핵심 원리는 now() 함수로 현재 날짜와 시간을 구한 뒤, 생년월일과의 차이를 일(day) 단위로 계산하고, 이를 다시 연도 형식으로 변환하는 것입니다.
사용되는 주요 함수 살펴보기
나이 계산에 사용되는 각 함수의 역할은 다음과 같습니다.
- now(): 현재 날짜와 시간을 반환합니다.
- DATEDIFF(): 두 날짜 사이의 일수 차이를 계산합니다.
- FROM_DAYS(): 일수를 날짜 값으로 변환합니다.
- DATE_FORMAT(…, '%Y'): 날짜에서 연도 부분만 추출합니다.
마지막에 +0을 더해주면 문자열 형태의 연도가 숫자형으로 변환되어 깔끔한 결과를 얻을 수 있습니다.
기본 문법
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), '생년월일')), '%Y')+0 AS 별칭;
직접 쿼리 실행해 보기
위 문법에서 '생년월일' 부분에 실제 날짜를 넣으면 됩니다. 예를 들어 2010년 11월 25일생의 나이를 계산하는 쿼리는 다음과 같습니다.
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(now(),'2010-11-25')), '%Y')+0 AS Age;
실행 결과는 다음과 같습니다.
+------+ | Age | +------+ | 8 | +------+ 1 row in set (0.00 sec)
테이블을 만들어 실전 예제 진행하기
이번에는 실제 테이블에 저장된 생년월일 데이터로 나이를 계산해 보겠습니다. 먼저 테이블을 생성합니다.
mysql> create table AgeCalculationFromDatetime -> ( -> YourDateofBirth datetime -> ); Query OK, 0 rows affected (0.52 sec)
다음으로 테이블에 생년월일 데이터를 삽입합니다.
mysql> insert into AgeCalculationFromDatetime values('1995-11-25');
Query OK, 1 row affected (0.13 sec)SELECT 문으로 저장된 모든 레코드를 확인해 보겠습니다.
mysql> select *from AgeCalculationFromDatetime;
실행 결과는 아래와 같습니다.
+---------------------+ | YourDateofBirth | +---------------------+ | 1995-11-25 00:00:00 | +---------------------+ 1 row in set (0.00 sec)
테이블 데이터로 나이 계산하기
이제 저장된 생년월일 컬럼을 기준으로 나이를 계산하는 쿼리를 실행합니다.
mysql> SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(now(),YourDateofBirth)), '%Y')+0 AS Age from AgeCalculationFromDatetime;
실행 결과는 다음과 같습니다.
+------+ | Age | +------+ | 23 | +------+ 1 row in set (0.00 sec)
정리
이처럼 MySQL에서는 DATEDIFF(), FROM_DAYS(), DATE_FORMAT() 세 가지 함수를 조합하면 별도의 복잡한 로직 없이도 생년월일로부터 정확한 나이(만 나이 기준의 연도 차이)를 손쉽게 구할 수 있습니다. 회원 관리 시스템이나 프로필 정보 처리 등 다양한 실무 상황에서 유용하게 활용할 수 있습니다.