본문 바로가기

아이티/oracle&DB

시간간격을 년, 개월, 일수로 보기

시간간격을 년, 개월, 일수로 보기   (Posted: 2006-04-28 10:16:36)




글쓴이 : 김홍선


문제)


emp table에서  오늘 날짜 까지의 근무일자를 보고 싶습니다 ..
근무 일수는  6년  2개월 2 일
위와 같이    일자 까지 보려면 어떻게 해야 하는지요


    EMPNO   ENAME   HIREDATE
    ------- ------  ---------
1   7369    SMITH   1980-12-17
2   7499    ALLEN   1981-02-20
3   7521    WARD    1981-02-22
4   7566    JONES   1981-04-02
5   7654    MARTIN  1981-09-28
6   7698    BLAKE   1981-05-01
7   7782    CLARK   1981-06-09
8   7788    SCOTT   1982-12-09
9   7839    KING    1981-11-17
10  7844    TURNER  1981-09-08
11  7876    ADAMS   1983-01-12
12  7900    JAMES   1981-12-03
13  7902    FORD    1981-12-03
14  7934    MILLER  1982-01-23


답변)


(sysdate - hiredate)의 시간간격을 년, 개월, 일수로 계산하는 문제이다. (hiredate는 date타입)
1년과 1개월을 계산하는 방식이 주어지지 않았으므로, SQL 함수에서의 계산 방식만을 따르기로 한다.
그리고 위에 주어진 3개의 컬럼에 년, 개월, 일 의 컬럼을 추가하여 보여지도록 한다.
쿼리는 아래와 같다.


SELECT empno
     , ename
     , hiredate
     , TRUNC (mb / 12) || '년' year#
     ,    TRUNC (MONTHS_BETWEEN (SYSDATE , ADD_MONTHS (hiredate, 12 * TRUNC (mb / 12))
          ))
       || '개월' month#
     , TRUNC (SYSDATE - ADD_MONTHS (hiredate, TRUNC (mb))) || '일' day#
  FROM (SELECT empno
             , ename
             , hiredate
             , MONTHS_BETWEEN (SYSDATE, hiredate) mb
          FROM emp)


EMPNO    ENAME     HIREDATE      YEAR#  MONTH#   DAY#
-----    ------    ----------   ------  ------   ----
7369     SMITH     1980-12-17     25년   7개월    9일
7499     ALLEN     1981-02-20     25년   5개월    6일
7521     WARD      1981-02-22     25년   5개월    4일
7566     JONES     1981-04-02     25년   3개월   24일
7654     MARTIN    1981-09-28     24년   9개월   28일
7698     BLAKE     1981-05-01     25년   2개월   25일
7782     CLARK     1981-06-09     25년   1개월   17일
7788     SCOTT     1987-04-19     19년   3개월    7일
7839     KING      1981-11-17     24년   8개월    9일
7844     TURNER    1981-09-08     24년  10개월   18일
7876     ADAMS     1987-05-23     19년   2개월    3일
7900     JAMES     1981-12-03     24년   7개월   23일
7902     FORD      1981-12-03     24년   7개월   23일
7934     MILLER    1982-01-23     24년   6개월    3일

#30분동안 음악들으며 원리파악에 나섰다 ㅡㅡ; 쉬운원리인데.. 역시 공부할땐 집중하는게 최고인듯~
원리는.. 기준일자에서 얼마나 현재까지의 시간이 벌어져있나를 년,월,일 단위로 재서 계산하는것임!!
반응형