다음의 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
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 ) ;