2009-09-30 4 views
1

Oracle에 NetBackup 통계를 가져 오려고합니다. 필자가 원했던 한 필드는 ACTIVE START이지만 bpdbjobs -report에서는 사용할 수 없습니다. 무엇 ACTIVEELAPSED되어 있습니다, 그래서 다음과 같이 나는 수입에 종료 시간에서 해당 빼기하려면 :Oracle SQLLDR로 날짜 빼기

종료 시간 형식 : 26/09/2009 오후 10시 46분 20초

경과 시간을 형식 : 028 : 32:35

SQL * 로더 제어 파일 (관련 라인) (시간, 분, 초입니다) :

ACTIVE_ELAPSED  BOUNDFILLER POSITION(261:270), 
END_TIME   POSITION(271:293) char "to_date(:End_time, 'dd/mm/yyyy hh:mi:ss AM')", 
ACTIVE_START  EXPRESSION "to_date(:END_TIME, 'dd/mm/yyyy hh:mi:ss AM') - TO_DSINTERVAL(':ACTIVE_ELAPSED')", 

내 인터넷 검색은 간격에 대한 형식 마스크가 없음을 나에게 알려, 그래서 나는 현재이다 stumped (오라클 SQL은 나의 정상적인 공연이 아니다!)

,

조나단

답변

1

당신은 경과 시간을 분할 일 (의 일부)로 변환 할 수 있습니다, 당신은 END_TIME에서 그것을 빼지 수 있습니다 : 나는 당신의 SQL의 위대함에 활

to_date(:END_TIME, 'dd/mm/yyyy hh:mi:ss AM') 
- substr(:elapsed_time, 1, instr(:elapsed_time, ':') - 1)/24 
- substr(:elapsed_time, 
     instr(:elapsed_time, ':') + 1, 
     instr(:elapsed_time, ':', 1, 2) - instr(:elapsed_time, ':') -1)/24/60 
- substr(:elapsed_time, instr(:elapsed_time, ':', 1, 2) + 1)/24/60/60 
+0

을! SQLDR의 토큰에 대한 258 자 제한을 초과하지 않도록 일부 필드 이름을 단축해야했지만 완벽하게 작동합니다! –

+0

다행) =) –