티스토리 뷰

개발하면서 간단하고 자주 쓰일 것 같은데 따로 메모해 두지않았던 유틸성 메소드 하나를 메모해 두고자 합니다.

자바스크립트를 사용하여 생년월일로 나이를 구하는 함수 입니다.
하단에 오라클 쿼리를 사용해서 구하는 것도 추가해 두었습니다.


/*
* 생년월일로 (만)나이 구하기
* @PARAM 생년월일 (format: YYYY/MM/DD or YY/MM/DD or YYYY-MM-DD or YY-MM-DD)
* @return CONSOLE.LOG
*/
function getAgeFromBirthDay(birth_day) {

// 전달받은 생년월일로 Date 객체 생성한다. 이하 생년월일 객체라고 칭한다.
var birthday = new Date("1980/04/03");

// 오늘 날짜 기준으로 나이를 구하기 위해 Date 객체 생성한다. -> 이하 오늘날짜 객체라고 칭한다.
var today = new Date();

// 오늘날짜 객체의 연도에서 생년월일 객체의 연도를 뺀다.
var years = today.getFullYear() - birthday.getFullYear();

// years 의 값이 실질적으로 구해진 나이이다.
console.log('계산 된 나이 : ' + years);

​// 계산 된 나이 : 37 --> 2017년 4월 3일 현재. 만 나이가 아닌 한국나이로 조회를 원한다면 태어난 해에 +1 살 먹기 때문에 +1 한 38 살로 리턴


/*
* 계속해서 만 나이 계산을 원하면 아래 처리를 계속해준다.
* 연도가 같은 두 객체를 비교하여 생년월일 객체가 오늘 날짜 객체보다 크다면 -1 해준다.
* (생일이 아직 지나지 않았다면 -1 을 한다.)
*/
// 생년월일 객체의 연도를 오늘 날짜 객체의 연도로 변경
birthday.setFullYear(today.getFullYear());

// 같은 연도가 된 객체를 비교하여 월일이 지났는 지 여부를 판단하여 years 를 뺀다.
if (today < birthday) years--;
console.log('계산 된 만 나이 : ' + years);

// 계산 된 만 나이 : 37 --> 2017년 4월 3일 현재. 만약 오늘이 4월 2일이라면 생일이 아직 안지났으니 만 나이는 36 살이 되겠습니다.
}


-- 아래는 추가로 ORACLE 에서 생년월일로 나이 구하기 입니다.
-- 아래는 만 나이가 아닌 실제 나이(실제 나이라고 표현하는게 맞을지는 모르겠지만) 를 구하기 위함이고 만 나이를 구하기 귀해서는 CASE WHEN 구문의 끝 END 뒤에 +1 을 삭제 하시면 됩니다.

SELECT CASE WHEN MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(replace(replace('19800403','-',''),'/',''),0,8),'YYYYMMDD')) / 12 < 1
THEN '0'
ELSE TO_CHAR(CEIL(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(replace(replace('19800403','-',''),'/',''),0,8),'YYYYMMDD')) /12))
END ​+1 AS AGE
FROM DUAL;

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함