Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2006, 21h47   #1
Membre habitué
 
Avatar de bidochon
 
Inscription : juin 2002
Messages : 140
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 140
Points : 102
Points : 102
Envoyer un message via MSN à bidochon
Par défaut probleme avec SUM et TIMEDIFF

bonjour,

voila mon petit soucis, j'ai 4 champs de type Time : HeureDebut, HeureFin, FPause et Dpause.
Je souhaiterais pouvoir faire l'operation suivante sur ces champs :
(HeureFin - HeureDebut)-(FPause - Dpause)
Code :
1
2
3
4
 
SELECT ((TIMEDIFF(TIMEDIFF(HeureFin,HeureDebut), TIMEDIFF(FPause,Dpause)))) 
FROM TableInterim 
WHERE DatePrestation='2006-12-12'
Cela fonctionne bien pour chaque ligne prise indivduellement.

Maintenant lorsque je veux les regrouper par somme c'est la que j'ai des soucis, les resultats sont tronqués.
Code :
1
2
3
4
 
SELECT SUM((TIMEDIFF(TIMEDIFF(HeureFin,HeureDebut),TIMEDIFF(FPause,Dpause))))
FROM TableInterim 
WHERE DatePrestation='2006-12-12'
Merci d'avance pour vos réponses
__________________
Tant de mains pour transformer ce monde, et si peu de regards pour le contempler !
(Julien Gracq)
bidochon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2006, 21h58   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
TIMEDIFF te renvoie une donnée de type TIME, du genre '02:05:00', qui ne peut pas être utilisé dans une somme. Il faut donc que tu traduises tes durées en secondes avec TIME_TO_SEC, afin de pouvoir faire ta somme. Tu peux ensuite repasser le résultat en TIME avec SEC_TO_TIME :

Code :
SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(...) )))
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2006, 14h31   #3
Membre habitué
 
Avatar de bidochon
 
Inscription : juin 2002
Messages : 140
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 140
Points : 102
Points : 102
Envoyer un message via MSN à bidochon
Merci Antoun,
Effectivement tu as bien raison, mon probleme était un probleme conversion de type. J'ai fait la modif avec les fonctions SEC_TO_TIME et TIME_TO_SEC et cela fonctionne.
__________________
Tant de mains pour transformer ce monde, et si peu de regards pour le contempler !
(Julien Gracq)
bidochon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h03.


 
 
 
 
Partenaires

Hébergement Web