Conversion timestamp vers date avec oracle 9.2
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:
Code:
1 2
|
vDuree := vHeureFin - vHeureDebut; |
je vais obtenir un interval, et je veux avoir un nombre de secondes, j'ai donc testé:
Code:
1 2
|
vDuree := to_date(vHeureFin) - to_date(vHeureDebut)*SecInADay; |
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:
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; |
Mes questions sont les suivantes:
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.