Somme en sql

layork Messages postés 364 Statut Membre -  
 Siiim -
re coucou!!!

je vous explique le probleme:
en fait j'ai dans ma base un champs duree de type TIME
et en fait, je voudrais simplement savoir comment on fait une requete qui donnerais la somme des durées
un truc dans ce genre:

$somme="SELECT SUM FROM appels WHERE 1 AND nom_diplomat LIKE '$nom_diplomat' AND dates LIKE '$date'
AND dates BETWEEN '$date1' AND '$date2' ";


l'informatique ca rend fou!!!!!
A voir également:

10 réponses

Siiim
 
Salut,

J'ai eu le même genre de soucis, en fait tu passer par des fonction MySQL :
TIME_TO_SEC(tonchamptime) -> renvoie la valeur de ton champ HH:MM:SS en seconde
et l'inverse
SEC_TO_TIME(valeurenseconde) -> renvoie HH:MM:SS d'une valeur en seconde

Avec ça tu peux combiner une somme : si tu veux ajouter 2 champs de temps :
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(champ1) + TIME_TO_SEC(champ2))) FROM table

Cela te renverra un HH:MM:SS de la somme de tes deux champs

Ensuite si tu ne veux que l'heure et les minutes, tu peux utiliser HOUR(tonchamp) et MINUTE(tonchamp)

Donc si tu l'appliques à la requete ci dessus, ça devrai donner un truc dans le genre :
SELECT HOUR(SEC_TO_TIME(SUM(TIME_TO_SEC(champ1) + TIME_TO_SEC(champ2)))),
MINUTE(SEC_TO_TIME(SUM(TIME_TO_SEC(champ1) + TIME_TO_SEC(champ2))))
FROM table

Pour info, il existe aussi des fonctions MySQL pour calculer la différence entre deux date : DATEDIFF et entre deux time : TIMEDIFF (cherchez sur le net).

Voilà,
bon courage à tous,

Simon.
3
sebsauvage Messages postés 33415 Statut Modérateur 15 664
 
mm... a priori un champ de type TIME ne contient pas une durée mais une date. C'est pas la même chose.

durée = différence entre 2 dates.

Si tu as une colonne qui contient une durée, ça donnerais:
SELECT identifiant_diplomate, sum(duree)
FROM appels
WHERE nom_diplomat LIKE '$nom_diplomat'
AND dates BETWEEN '$date1' AND '$date2'
GROUP BY identifiant_diplomat


ça te donnera la durée totale diplomate par diplomate.
0
layork Messages postés 364 Statut Membre 11
 
j ai regardé et en fait TIME c'est au format HH:MM:SS
pour la difference entre 2 date c es le type DATE qui est en AAAAMMJJ
le probleme risque d'etre que time c'est l'heure, et nom une durée

donc en fait, si quelqu'un a une meilleur idée, je sus preneur

en fait dans un champs on rentre la durée d'un appels sous cette forme:
1h20, mai j ai remplacé le "h" par":"
et donc j aimerais faire la somme des temps

es-ce possible??

l'informatique ca rend fou!!!!!
0
rucht Messages postés 248 Statut Membre 1
 
tu veut donc faire la somme totale des appel d' un diplomate ( vive l' espionnage !! ;-p ) ?

moi je te conseille de faire sa dans une page php ( sa sera plus facile a prog ) mais je pence que tu peux arriver a faire sa directement en requete sql ( mais perso je sais juste que sql sait faire les addition ) !

rucht ( qui aure ete bien espion si y faler pas faire de sport ;p )
0
Matth_X
 
Salut,
tout d abord j aimperais preciser que la BSD n est pas mon fort ;
mais j aurias une suggestion qu elle me paraît intersssante:
Tu pourrais essayer un Groupe By pour ta dernière requète: le and final.

Voilà , c est tout j esoere que ca te sera qd meme util.
aurevoir et @+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
layork Messages postés 364 Statut Membre 11
 
tout d'abord, un diplomat, dans mon cas, n'est pas un homme politique, mais un serveur :p
je suis pas espion;)(dommage..)
et en fait c es un site pour support technique ou on entre tous les appels, et apres on peut faire des recherche des appels recu, par client, par date....
et en fait, apres j affiche le resultat de la recherche
et je voudrais que lors de cette affichage, il calcul la durée, en sachant que pour la durée, j ai creer un champs TIME

apres, e sais pas si c es possible d'aditionner des TIME, et si oui, je sais as comment faire

sinon, je suis preneur pour d'autres solution

pour l'histoire de faire une autre page, ca ne me convient pas, v qe je veut afficher le temps sur la meme page ou j'affiche le resultat de la recherche...dommage:(

l'informatique ca rend fou!!!!!
0
layork Messages postés 364 Statut Membre 11
 
peut etre faut il que je transforme mon champs TIME en VARCHAR
et que ensuite, je fasse un traitement hp pour calculer
mais ca s annonce tres tres tres rude!!!
vu que le temps est rentré sous cette forme HH:MM
rien que d'y pencer ca me fatigue!!

l'informatique ca rend fou!!!!!
0
rucht Messages postés 248 Statut Membre 1
 
si tu recupere plutot le resultat en minute le calcul serai grandement faciliter !!

rucht ( qui cherche toujour la facilliter )
0
rucht Messages postés 248 Statut Membre 1
 
moi je pourrait te dire comment faire en php mais en sql ...

desoler !

rucht ( qui est a sa 1 ere anner de prog ...)
0
layork Messages postés 364 Statut Membre 11
 
ba propose toujours, ca peut peut etre marcher en php..
faut voire si c'est adaptabe avec ma page

l'informatique ca rend fou!!!!!
0
rucht Messages postés 248 Statut Membre 1 > layork Messages postés 364 Statut Membre
 
tu utilise " substr($date,0,4) " pour recupere ce qui t' interresse ( le heure puis les minute)
t' ajoute les minute
 while ( $min =< 60)
  {

$min-=60;
$heure+=1;
}


puis les heure
et sa doit marcher ( il y aura des truck a modif mais bon ...)

rucht ( qui aide comme il peut )
0
lotto73 Messages postés 9 Statut Membre 1
 
bin tu te tait si tu ne sait pa
merci d avance
themosthated :  www.themosthated.fr.st 
0
layork Messages postés 364 Statut Membre 11
 
bon, je repose ma question simplement:

y a t'il un moyen de faire la somme de plusieur durée(qui sont a la base en n'importe quel format HH:MM ou MIN....) et de recuperer un resultat sous forme HH:MM?????????

l'informatique ca rend fou!!!!!
0
layork Messages postés 364 Statut Membre 11
 
c es lker et net, mais c'est pas possible malheuresemet car pour le technicien, c est bien plus facile de rentrer en HH:MM
et c'est ausi bien plus parlant

l'informatique ca rend fou!!!!!
-1