|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
Bonjour à tous,
Je vous expose mon problème : j'ai une table avec des heures au format hh:mm:ss (colonnes de type varchar2) et j'aimerais faire des soustractions d'heures basiques du genre : 06:20:00-05:10:00 = 70:00 en gros (je passe du format hh:mm:ss au format mm:ss). Mon problème est que je ne suis pas sur 24h mais sur 25 ou 26 (je peux avoir des heures du type 26:42:12 par exemple). Actuellement, je transforme donc mes heures en secondes à coup de to_number(substr(heure,1,2)*3600 + substr(...)), je fais ma soustraction et je reconvertis en format mm:ss à coup de to_char(floor(secondes/60)) || ':' || to_char(mod(secondes,60))... Ca marche, mais sachant que j'aimerais faire cette soustraction directement dans le Select de ma requete, cela me fait beaucoup de blabla pour pas grand chose au final. Quelqu'un aurait-il une solution plus élégante ou cela n'est-il tout simplement pas possible? Merci d'avance pour vos réponses. |
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Vous pouvez travailler avec le type INTERVAL, mais ça demande quelques manipulations qui au final ne seront pas forcément beaucoup plus simple que ce que vous avez là.
Compte-tenu que vos heures peuvent dépasser 24, je n'ai trouvé que le format ISO pour convertir. Ensuite la soustraction est simple, mais il faut encore reconvertir le résultat dans une chaîne de caractères. Je détaille ici toutes les manipulations : Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
Merci pour votre réponse, ce n'est effectivement pas vraiment plus simple
Par contre je n'avais pas pensé à la vue, qui serait une solution intermédiaire. Je vais voir si je peux me diriger dans ce sens. |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
Tu peux mettre tout ton calcul dans le select, sinon, une petite fonction ferait la même chose
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com