2014-03-25 2 views
0

작업의 시작과 종료 시간 사이의 시간을 계산하려고합니다. 여기 내 쿼리입니다 :oracle sql에서 두 날짜 빼기

SELECT request_id, user_concurrent_program_name, 
DECODE(phase_code,'C','Completed',phase_code) phase_code, 
DECODE(status_code,'D', 'Cancelled' , 
'E', 'Error' , 'G', 'Warning', 
'H','On Hold' , 'T', 'Terminating', 
'M', 'No Manager' , 'X', 'Terminated', 
'C', 'Normal', status_code) status_code, 
actual_start_date, actual_completion_date, completion_text 
FROM apps.fnd_conc_req_summary_v 
WHERE phase_code='C' AND 
status_code='C' 
ORDER BY 6 DESC 

actual_start_dateactual_completion_date의 유형 DATE이며, 형식은 다음과 같다 : 질문은

ACTUAL_START_DATE   ACTUAL_COMPLETION_DATE 
3/25/2014 2:00:14 PM  3/25/2014 2:00:18 PM 

, 나는이 두 열을 빼고 00:00:04 같은 것을 얻을 수있는 방법 ? 어떤 경우에는

는 작업이 이틀 동안 runned 수 있으며, 나는 다음과 같은 방법은 하루 구성 요소를 추출 2 days and 00:00:02

+2

[여기에서 확인 (http://stackoverflow.com/quest : 메인 쿼리에서, 당신은 단지 select 목록의 마지막에이를 추가 ions/15755714/oracle-query-the-difference-between-two-dates) – Himanshu

답변

1

같은 결과를 얻을해야하고 to_char()를 사용하여 시간 형식 :

select (trunc(ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE) || ' days and ' || 
     to_char(to_date('2000-01-01', 'YYYY-MM-DD') + (ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE), 
       'HH24:MI:SS' 
       ) 
     ) 

SELECT request_id, user_concurrent_program_name, 
     DECODE(phase_code, 'C', 'Completed', phase_code) phase_code, 
     DECODE(status_code, 'D', 'Cancelled' , 'E', 'Error' , 'G', 'Warning', 
       'H','On Hold' , 'T', 'Terminating', 'M', 'No Manager' , 'X', 'Terminated', 
       'C', 'Normal', status_code 
      ) as status_code, 
     actual_start_date, actual_completion_date, completion_text 
     (trunc(ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE) || ' days and ' || 
     to_char(to_date('2000-01-01', 'YYYY-MM-DD') + (ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE), 
       'HH24:MI:SS' 
       ) 
     ) as Diff_DDHHMMSS 
FROM apps.fnd_conc_req_summary_v 
WHERE phase_code='C' AND 
status_code='C' 
ORDER BY 6 DESC; 
+0

어떻게이 SQL 쿼리를 메인 쿼리에 통합 할 수 있습니까? – AloneInTheDark

+0

그런 종류의 작품이지만 "시간대"부분은 항상 "0 일 및 12:00:01"과 같은 값 "12"를 표시하는 문제가 있습니다. – AloneInTheDark

+0

@AloneInTheDark. . . 당연하지. Oracle에서 'HH24'여야합니다. –