마농님.. 도와주세요 ㅠㅠㅠㅠㅠㅠ 0 2 646

by 토리토리 [2018.01.29 10:41:30]


다음의 hh:mm 시간값들을 합산하고 싶습니다.

이때 LPAD를 사용했을 경우 합산을 몇년치 할 경우 시간 자리수가 4자리, 5자리 넘어가게 되면 짤리거나..

합산 시간 앞에 0이 붙어서 합산이 되지 않도록 구현하고 싶습니다. 

(예 : 0110:01 (X) => 110:01 ) 

좀 쉽게 할 수 있는 방법 없을까요?ㅠㅠ

 

2018-01-01       16:25    01:00    00:00    
2018-01-01       16:25    02:00    10:00    
2018-01-02       16:25    00:00    02:00    
2018-01-02       16:25    00:00    01:00    

=> 원하는 결과값

2018-01-01      32:50   03:00  10:00

2018-01-02      32:50   00:00  03:00

by 우리집아찌 [2018.01.29 12:42:46]
-- 마농님이 바쁘신거 같아서 대신...
WITH T AS (
SELECT '0110:01' HH FROM DUAL
)

SELECT LTRIM(HH,'0') FROM T 

 


by 마농 [2018.01.30 09:09:51]
WITH t AS
(
SELECT '2018-01-01' dt, '16:25' tm1, '01:00' tm2, '23:59' tm3 FROM dual
UNION ALL SELECT '2018-01-01', '16:25', '02:00', '23:59' FROM dual
UNION ALL SELECT '2018-01-02', '16:25', '00:00', '23:59' FROM dual
UNION ALL SELECT '2018-01-02', '16:25', '00:00', '23:59' FROM dual
UNION ALL SELECT '2018-01-02', '16:25', '00:00', '23:59' FROM dual
)
SELECT TO_CHAR(h1 + FLOOR(m1 / 60), 'fm999900') || ':' || LPAD(MOD(m1, 60), 2, '0') tm1
     , TO_CHAR(h2 + FLOOR(m2 / 60), 'fm999900') || ':' || LPAD(MOD(m2, 60), 2, '0') tm2
     , TO_CHAR(h3 + FLOOR(m3 / 60), 'fm999900') || ':' || LPAD(MOD(m3, 60), 2, '0') tm3
  FROM (SELECT SUM(SUBSTR(tm1, 1, 2)) h1 
             , SUM(SUBSTR(tm1, 4, 2)) m1
             , SUM(SUBSTR(tm2, 1, 2)) h2 
             , SUM(SUBSTR(tm2, 4, 2)) m2
             , SUM(SUBSTR(tm3, 1, 2)) h3 
             , SUM(SUBSTR(tm3, 4, 2)) m3
          FROM t
        )
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입