2014-09-07 6 views
0

시간이 오라클 데이터베이스에 hh.mm 형식으로 저장되어 있습니다. 합계를 계산 한 다음 동일한 형식 hh의 다른 열에 다시 써야합니다. mm. 이 합계 ​​유형에 대해 oracle에 함수가 있습니까? 처음부터 다시해야합니까?h.mm 형식의 시간을 분 단위로 변환합니다.

미리 감사드립니다.

답변

0

사용자 지정 형식으로 값을 저장하고 있습니다. 따라서 오라클은이를 처리 할 수있는 내장 기능을 제공하지 않습니다.

이렇게하려면 일련의 단계가 필요하며 사용자 정의 함수로 래핑 할 수 있습니다.

  1. 숫자 열을 문자열로 변환하십시오. 그렇지 않으면 다음 단계는
  2. 간단한 산술 분의 총 수를 파생 열에서 시간과 분 값을 추출 잘못된 결과를
  3. 를 사용하여 정규 표현식을 생산합니다, 형식 마스크를 지정하는 것이 중요하다
  4. 파생 새로운 산술 연산의 총 시간과 남은 시간은 간단한 산술을 사용합니다.
  5. 의사 숫자로 최종 숫자를 파생시킵니다. 여기

합니다 ... SQL입니다

select hh + (mi/100) as final_result 
from (
    select trunc(step3.tot_mins/60) as hh 
     , step3.tot_mins - (trunc(step3.tot_mins/60)*60) as mi 
    from (
     select sum((step2.hh*60)+step2.mi) as tot_mins 
     from (
     with step1 as (select to_char(ctime, '00000000000.99') ctime 
        from your_table) 
     select to_number(regexp_substr(ctime, '([0-9]+)', 1,1)) as hh 
       , to_number(regexp_substr(ctime, '([0-9]+)', 1, 2)) as mi 
     from step1 
      ) step2 
    ) step3 
) step4 
/

... 여기 the obligatory SQL Fiddle입니다.

관련 문제