본문 바로가기

Oracle

오라클 나이 계산하기(주민등록번호 2000년대생, 만나이, 개월수)

728x90

 

오라클 나이 계산하기 

만나이, 일수 + 1세 미만은 개월수로 계산하는 쿼리문

WITH CHILD AS (
    SELECT '동수' NAME, TO_DATE('20240813', 'YYYYMMDD') BIRTHDAY FROM DUAL UNION ALL
    SELECT '민희' NAME, TO_DATE('20111125', 'YYYYMMDD') BIRTHDAY FROM DUAL UNION ALL
    SELECT '영숙' NAME, TO_DATE('20020401', 'YYYYMMDD') BIRTHDAY FROM DUAL UNION ALL
    SELECT '경자' NAME, TO_DATE('19970107', 'YYYYMMDD') BIRTHDAY FROM DUAL 
)
SELECT NAME
     , TO_CHAR(BIRTHDAY, 'YYYY-MM-DD') BIRTHDAY
     , CASE WHEN TRUNC(SYSDATE) - BIRTHDAY <= 30 THEN
                 TRUNC(SYSDATE) - BIRTHDAY + 1 || '일'
            WHEN MONTHS_BETWEEN(TRUNC(SYSDATE), BIRTHDAY) < 12 THEN
                 TRUNC(MONTHS_BETWEEN(TRUNC(SYSDATE), BIRTHDAY)) || '개월'
            ELSE
                 TRUNC(MONTHS_BETWEEN(TRUNC(SYSDATE), BIRTHDAY) / 12 ) || '세'
       END AGE
  FROM CHILD;

 

 

오라클 주민등록번호로 2000년대생 나이 계산하기 

9: 1800 ~ 1899년에 태어난 남성
0: 1800 ~ 1899년에 태어난 여성
1: 1900 ~ 1999년에 태어난 남성
2: 1900 ~ 1999년에 태어난 여성
3: 2000 ~ 2099년에 태어난 남성
4: 2000 ~ 2099년에 태어난 여성
5: 1900 ~ 1999년에 태어난 외국인 남성
6: 1900 ~ 1999년에 태어난 외국인 여성
7: 2000 ~ 2099년에 태어난 외국인 남성
8: 2000 ~ 2099년에 태어난 외국인 여성

 

WITH BASE AS (
SELECT '영숙' AS NAME, '2409104111111' AS AGE FROM DUAL UNION ALL
SELECT '민지' AS NAME,  '9901051111111' AS AGE FROM DUAL UNION ALL
SELECT '정숙' AS NAME,  '1811063111111' AS AGE FROM DUAL UNION ALL
SELECT '옥순' AS NAME,  '2112083111111' AS AGE FROM DUAL UNION ALL
SELECT '순자' AS NAME,  '9111062111111' AS AGE FROM DUAL
)
SELECT
	NAME,
	TO_CHAR(TO_DATE(CASE WHEN SUBSTR(AGE,7,1) IN ('1','2','5','6') THEN '19' WHEN SUBSTR(AGE,7,1) IN ('3','4','7','8') THEN '20' END||SUBSTR(AGE,1,6),'YYYYMMDD'),'YYYY-MM-DD')  AS BIRTH_YMD
FROM BASE;

 

➡️ 쿼리 실행 결과