[Oracle] 오라클 나이 계산 쿼리 (만나이, 한국나이, 신생아)

오라클에서 MONTHS_BETWEEN 함수를 사용하여 쉽게 나이를 계산 할 수 있다. 만나이 계산 방법을 많이 사용하며, 이것을 응용하여 한국나이를 계산할 수있다.


1세 미만의 나이는 개월수 또는 일수로 계산할 수 있는 쿼리도 있으니 아래를 참고하면 된다.


만나이 계산 쿼리

SELECT TRUNC(MONTHS_BETWEEN(TRUNC(SYSDATE), TO_DATE('19890326','YYYYMMDD')) / 12)
  FROM DUAL


한국나이 계산 쿼리

SELECT MONTHS_BETWEEN(TRUNC(SYSDATE,'YEAR'),
                      TRUNC(TO_DATE('19890326','YYYYMMDD'),'YEAR')) /12 +1
  FROM DUAL

※ 한국나이 = 현재년도 - 출생년도 + 1


만나이, 개월수, 일수(신생아)

WITH TEMP AS (
    SELECT 'JONES'  NM, TO_DATE('20190702', 'YYYYMMDD') BIRTHDAY FROM DUAL UNION ALL
    SELECT 'ADAMS'  NM, TO_DATE('20190228', 'YYYYMMDD') BIRTHDAY FROM DUAL UNION ALL
    SELECT 'MILLER' NM, TO_DATE('19921114', 'YYYYMMDD') BIRTHDAY FROM DUAL 
)


SELECT NM
     , 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 TEMP

※ 1세 미만의 경우 개월수 또는 일수로  계산

 

댓글

Designed by JB FACTORY