DataBase/Oracle

[Oracle] 근속년수 조회 - 년수 / 개월수 / 일수 계산 쿼리

이지랩(ezLab) 2022. 12. 29. 15:41
반응형

근속년수 조회 - 년수 / 개월수 / 일수 계산 쿼리 - 오라클(Oracle)

 

 

근속기간(년, 월, 일) 구하기 - 오라클(Oracle) 쿼리(Query)

 

근속년수 조회 쿼리 - 오라클(Oracle)
-- 근속년수 조회 - 년수 / 개월수 / 일수 계산 쿼리
SELECT  A.EMP_NAME                                                                             AS "직원명"
      , TO_CHAR(A.EMP_STRT_YMD, 'YYYY-MM-DD')                                                  AS "입사일"
      , TO_CHAR(SYSDATE, 'YYYY-MM-DD')                                                         AS "현재(기준일)"
      , TRUNC(MONTHS_BETWEEN(SYSDATE, A.EMP_STRT_YMD) / 12)                                    AS "년(근속)"
      , TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, A.EMP_STRT_YMD) / 12, 1) * 12)                       AS "개월(근속)"
      , TRUNC(MOD(MOD(MONTHS_BETWEEN(SYSDATE, A.EMP_STRT_YMD) / 12, 1) * 12, 1) * (365 / 12))  AS "일(근속)"
  FROM  ( -- 직원정보 테이블 (직원명, 입사일)
         SELECT '홍길동' AS EMP_NAME, TO_DATE('2020-01-01', 'YYYY-MM-DD') AS EMP_STRT_YMD FROM DUAL UNION ALL
         SELECT '강감찬' AS EMP_NAME, TO_DATE('2021-01-01', 'YYYY-MM-DD') AS EMP_STRT_YMD FROM DUAL UNION ALL
         SELECT '이순신' AS EMP_NAME, TO_DATE('2022-01-01', 'YYYY-MM-DD') AS EMP_STRT_YMD FROM DUAL
        ) A
;

 

쿼리결과

 

쿼리설명
"~년 ~개월 ~일" 로 근속기간을 보여주기 위한 쿼리이다.

12개월을 나눠서 정수만으로 "년수"로 사용하고,
남은 값(1미만)으로 다시 12개월을 곱해  정수값을 만들어 "개월수"로 사용하고,
나머지 일수를 계산하는 방법이다.

(간단정리)
년수계산 > 남은 값으로 개월수 계산 > 남은 값으로 일수 계산

 

반응형