본문 바로가기
유틸/MySQL

[MySQL] 나이 계산

by lanuarius19 2022. 6. 12.
728x90

MySQL 나이 계산

 

MySQL 나이 계산하기 (TO_DAYS())

MySQL에서 사용자의 생년월일을 받아서 만나이를 계산하려면 TO_DAYS() 함수를 먼저 알아야 합니다.
TO_DAYS() 함수는 입력된 날짜를 0000년부터 1일 단위로 자동으로 계산하여 값을 리턴합니다.
여기서 알아야 할 점은 아래 예시처럼 날짜의 포맷 형식에 제한없이 동일한 값을 리턴해준다는 것 입니다.

SELECT TO_DAYS('20220612')
→ 738683

SELECT TO_DAYS('2022-06-12')
→ 738683

SELECT TO_DAYS('2022/06/12')
→ 738683

SELECT TO_DAYS(220612)
→ 738683



TO_DAYS() 함수를 이용해서 현재 날짜에서 사용자의 생년월일을 빼주고, 365로 나누면 만나이를 구할 수 있습니다.
예를 들어 2000년 1월 19일을 사용자의 생년월일로 받았다고 하고 위의 방식대로 계산해보겠습니다.

SELECT (TO_DAYS(NOW()) - TO_DAYS('20000119')) / 365
→ 22.411



위에서 설명한 계산식대로 하니 22.411살이 리턴됩니다.
하지만 나이는 소수점으로 리턴되면 안되기 때문에 TRUNCATE()함수를 사용하여 소수점을 잘라줍니다.

* ROUND()함수를 사용하여 반올림을 하면 생일이 안지났음에도 불구하고 1살이 올라가기 때문에 제대로 된 계산이 되지 않습니다.

SELECT TRUNCATE((TO_DAYS(NOW()) - TO_DAYS('20000119')) / 365, 0)
→ 22

이와 같은 방법으로 생년월일을 받아서 MySQL 함수를 이용해 사용자의 나이를 구할 수 있습니다.
정확한 나이 이외에도 나이대와 같은 대략적인 나이를 구하는 방법은 다음과 같습니다.

 

MySQL 나이대 구하기

10대, 20대와 같은 사용자의 나이대를 구하기 위해서는 위에서 사용한 계산식을 이용하면 됩니다.
사용자의 나이를 구할 때, TRUNCATE() 함수로 1의자리를 버려주면 나이대를 구할 수 있습니다.

SELECT TRUNCATE((TO_DAYS(NOW()) - TO_DAYS('20000119')) / 365, -1)
→ 20

위와 같이 22살인 사용자를 20대라고 구할 수 있습니다.


포스팅에서 잘못된 점이나 궁금하신 점이 있다면 댓글로 남겨주세요!
읽어주셔서 감사합니다 :)

728x90

댓글