본문 바로가기
Programming/Oracle

두 시간 사이를 분단위로 구해보자.

by NAMP 2011. 11. 24.


--차이값 얻기

          SELECT  TRUNC((TO_TIME - FROM_TIME)*24 * 60) AS DIFF
          FROM (
                SELECT TO_DATE('201111261212', 'YYYYMMDDHH24MI') TO_TIME
                  , TO_DATE('201111251212', 'YYYYMMDDHH24MI') FROM_TIME 
                  FROM dual
                 )


--갯수만큼 구하기

SELECT ROWNUM NUM  
 FROM DICTIONARY DIC
     , (
          SELECT  TRUNC((TO_TIME - FROM_TIME)*24 * 60) AS DIFF
          FROM (
                SELECT TO_DATE('201111261212', 'YYYYMMDDHH24MI') TO_TIME
                  , TO_DATE('201111251212', 'YYYYMMDDHH24MI') FROM_TIME 
                  FROM dual
                 )
        ) DIFF
 WHERE ROWNUM <= DIFF.DIFF + 1



--그 사이의 시간을 만든다.

SELECT NUM
    , FROM_TIME
    , TO_TIME
    , TO_CHAR(FROM_TIME + (NUM-1)/24/60,'YYYYMMDDHH24MI')
  FROM
  (
   SELECT ROWNUM NUM
        , FROM_TIME
        , TO_TIME        
   FROM DICTIONARY DIC
       , (
            SELECT  TRUNC((TO_TIME - FROM_TIME)*24 * 60) AS DIFF
                  , FROM_TIME
                  , TO_TIME                  
            FROM (
                  SELECT TO_DATE('201111261212', 'YYYYMMDDHH24MI') TO_TIME
                    , TO_DATE('201111251212', 'YYYYMMDDHH24MI') FROM_TIME 
                    FROM dual
                   )
          ) DIFF
   WHERE ROWNUM <= DIFF.DIFF + 1
  ) 

댓글