Bonjour,
J'ai eu le problème suivant:
Je souhaite obtenir la durée d'exécution d'un programme dont j'ai l'heure de début et l'heure de fin au format timestamp.
Si je fais:
je vais obtenir un interval, et je veux avoir un nombre de secondes, j'ai donc testé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 vDuree := vHeureFin - vHeureDebut;
et la j'obtiens une erreur oracle m'indiquant que le masque de conversion est trop cours. J'ai résolu le problème en ajoutant une conversion to_char avant le to_date, avec un masque identique à chaque fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 vDuree := to_date(vHeureFin) - to_date(vHeureDebut)*SecInADay;
Mes questions sont les suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 vDuree := (to_date(to_char(vHeureFin,'DD-MON-RR HH24:MI:SS'),'DD-MON-RR HH24:MI:SS') - to_date(to_char(vHeureDebut,'DD-MON-RR HH24:MI:SS'),'DD-MON-RR HH24:MI:SS'))*SecInADay;
1/Pourquoi oracle semble passer par un to_char implicite pour cette conversion? On pourrait logiquement penser que les deux types sont plus ou moins compatibles, non?
2/Y a t'il une autre solution plus simple pour faire çà, sachant que je souhaite conserver les types de données timestamp et number pour la durée?
Merci de vos réponses.







Répondre avec citation
Partager