『우주라이크 개발

나이계산 SQL(만나이) 쿼리

우은우 2018. 3. 8.
반응형

나이 계산을 위해서는 주민번호 체계를 먼저 이해해야 합니다.

주민번호 : 8301161******

앞의 생년월일6자리 다음에 오는 자리는 일반적으로 성별을 판별하는 것으로 알고 있지만,
그 외에 나이를 계산하는 용도로도 사용이 됩니다.

- 7번째 자리 기준
  1, 2 : 1900년대 생
  3, 4 : 2000년대 생
  9, 0 : 1800년대 생

이 기준으로 샘플 SQL을 만들어보겠습니다.

1. 일단, 계산을 위해 먼저 데이터를 만듭니다.
  CREATE TABLE TMP_AGE AS
      SELECT 8301161 FROM DUAL
      UNION
      SELECT 1401213 FROM DUAL

2. 생성된 데이터에 대해 나이 계산을 합니다.
SELECT BIRTH,
TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))-TO_NUMBER(
    CASE WHEN SUBSTR(BIRTH,7,1) IN('1','2','5','6') THEN '19'
              WHEN SUBSTR(BIRTH,7,1) IN('3','4','7','8') THEN '20'
    END SUBSTR(BIRTH,1,2)) +1 AGE


---------------------------------------------------------------------
결과

 BIRTH  AGE
 8301161 39 
 1401213


3. 만 나이 계산
위 SQL에서 마지막 +1을 제거해주면 됩니다.
SELECT BIRTH,
TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))-TO_NUMBER(
    CASE WHEN SUBSTR(BIRTH,7,1) IN('1','2','5','6') THEN '19'
              WHEN SUBSTR(BIRTH,7,1) IN('3','4','7','8') THEN '20'
    END SUBSTR(BIRTH,1,2))  AGE


 

반응형

댓글