2009-09-30 3 views
1

J'essaie d'importer des statistiques NetBackup dans Oracle. Un champ que je veux vraiment est ACTIVE START, mais il n'est pas disponible à partir de bpdbjobs -report. Ce qui est disponible est ACTIVEELAPSED, donc je veux soustraire que de l'heure de fin à l'importation comme suit:Soustraction Oracle Date avec SQLLDR

HEURE DE FIN Format: 26/09/2009 22:46:20

ÉCOULÉ Format: 028: 32:35 (ce qui est des heures, minutes, secondes)

fichier SQL * Loader contrôle (lignes pertinentes):

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')", 

Mon googler me informe qu'il n'y a pas de masques de format pour l'intervalle, donc je suis actuellement perplexe (Oracle SQL n'est pas mon concert normal!)

Jonathan

Répondre

1

vous pouvez diviser le temps écoulé et le convertir en (fraction) jours, alors vous pouvez soustrayez à partir END_TIME:

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

Je me prosterne à votre grandeur SQL! J'ai dû raccourcir certains noms de champs afin de ne pas dépasser la limite de 258 caractères pour un jeton dans SQLDR, mais cela fonctionne parfaitement! –

+0

heureux d'aider =) –

Questions connexes