Somme en sql

Fermé
layork Messages postés 361 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 6 avril 2009 - 16 juin 2004 à 11:13
 Siiim - 9 mars 2010 à 10:59
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!!!!!

10 réponses

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 32847 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 656
16 juin 2004 à 11:18
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 361 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 6 avril 2009 11
16 juin 2004 à 11:32
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 245 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 18 juillet 2008 1
16 juin 2004 à 11:38
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
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 361 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 6 avril 2009 11
16 juin 2004 à 11:44
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 361 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 6 avril 2009 11
16 juin 2004 à 11:48
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 245 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 18 juillet 2008 1
16 juin 2004 à 11:53
si tu recupere plutot le resultat en minute le calcul serai grandement faciliter !!

rucht ( qui cherche toujour la facilliter )
0
rucht Messages postés 245 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 18 juillet 2008 1
16 juin 2004 à 12:00
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 361 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 6 avril 2009 11
16 juin 2004 à 14:00
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 245 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 18 juillet 2008 1 > layork Messages postés 361 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 6 avril 2009
16 juin 2004 à 14:13
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 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 31 octobre 2004 1
16 juin 2004 à 13:03
bin tu te tait si tu ne sait pa
merci d avance
themosthated :  www.themosthated.fr.st 
0
layork Messages postés 361 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 6 avril 2009 11
16 juin 2004 à 14:15
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 361 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 6 avril 2009 11
16 juin 2004 à 11:58
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