Oracle
오라클 나이 계산하기(주민등록번호 2000년대생, 만나이, 개월수)
꼬요버디
2024. 8. 13. 15:27
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;
➡️ 쿼리 실행 결과