additionner des heures

Eléphanteau du PHP | 25 Messages

28 nov. 2006, 08:58

Bonjour !
Je voudrais faire la somme de 2 heures sous mysql car plus facile et plus rapide comme exemple dans la fenetre d'execution de requete de phpMyadmin :
select addtime (1:30:00, 1:30:00) cela me renvoie bien 03:00:00 là pas de pb.Mais quand je veux utiliser mes champs :
je fais cela select addtime ('tps1', 'tps2') AS tps3 celane marche pas.Je ne vois pas mon erreur.On peut transposer ADDTIME sous php ?
Merci par avance

ViPHP
ViPHP | 1961 Messages

28 nov. 2006, 09:12

Bonjour,
Tes champs sont de quel type ?
Quelle valeur contiennet-ils?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 25 Messages

28 nov. 2006, 09:27

Bonjour !

mes champs sont de type time , ils contiennent des temps style par ex :
01:21:32
Merci par avance

ViPHP
ViPHP | 1961 Messages

28 nov. 2006, 09:37

Re,
Est tu sur de ça ?
Je viens de faire un essai, voici ce que j'obtiens

Code : Tout sélectionner

mysql> create table temps( -> heure1 time, -> heure2 time); Query OK, 0 rows affected (0.04 sec) mysql> insert into temps values ('01:01:01', '02:02:02'); Query OK, 1 row affected (0.02 sec) mysql> select addtime(heure1, heure2) heure3 from temps; +----------+ | heure3 | +----------+ | 03:03:03 | +----------+ 1 row in set (0.04 sec)
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 nov. 2006, 10:00

Lorsque tu met des champs dans une requete, tu peut utiliser des caractères d'encadrements mais ceux si sont ` (altGr+7) et pas '

Alors essaye cette requete

Code : Tout sélectionner

select addtime (`tps1`, `tps2`) ...
ou, comme tes champs ne contiennent aucun espaces, comme la requete d'Ajoloca

Code : Tout sélectionner

select addtime (tps1, tps2) ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 1961 Messages

28 nov. 2006, 10:03

Lorsque tu met des champs dans une requete, tu peut utiliser des caractères d'encadrements mais ceux si sont ` (altGr+7) et pas '

Alors essaye cette requete

Code : Tout sélectionner

select addtime (`tps1`, `tps2`) ...
ou, comme tes champs ne contiennent aucun espaces, comme la requete d'Ajoloca

Code : Tout sélectionner

select addtime (tps1, tps2) ...
Bien vu pour les apostrophes :pouce:
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 25 Messages

28 nov. 2006, 15:43

merci de vos reponses!

j'ai tout essaye (altgr+7) toute la syntaxe que vous me proposez,cela me renvoie erreur de syntaxe.

A+

ViPHP
ViPHP | 1961 Messages

28 nov. 2006, 15:48

Re,
Poste ta requête, l'erreur et un select normal de tes deux colonnes.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 25 Messages

28 nov. 2006, 15:58

voila ceque je fais :
SELECT ADDTIME (`T1` , `T2`) AS `TT`
le retour:
#1064 - Erreur de syntaxe pr�s de '(`T1` , `T2`) AS `TT`' � la ligne 1
Merci

ViPHP
ViPHP | 1961 Messages

28 nov. 2006, 16:04

Re,
Poste ta requête, l'erreur et un select normal de tes deux colonnes.
Là tu ne me dommes pas grande chose, mais bon déjà il-y-a une erreur, essaie ça

Code : Tout sélectionner

SELECT ADDTIME (`T1` , `T2`) AS TT FROM ....
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 nov. 2006, 17:16

Je ne suis pas sûr mais enlève l'espace entre "ADDTIME" et "(" :?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 25 Messages

28 nov. 2006, 17:50

C 'est bon ! cela marche select addtime.....from clt2
Quel nul je suis !
Merci pour votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

28 nov. 2006, 18:04

Permettez moi d'intervenir mais je trouve ça pas normal du tout : Le fait d'additionner deux temps.
Car logiquement un champ time fait constat d'un temps et non une durée
et donc additionner des temps ne veut rien dire par contre ajouter une durée à un temps de départ ou soustraire un temps d'un autre pour obtenir une durée c'est logique.

Par exemple :
Quand on dit :
  • il est '10:00:00' n'est qu'un constat de temps
    de même, il est 11:00:00 est un deuxième constat de temps
    Le fait d'additionner les 2 temps '10:00:00' et '11:00:00' ce qui donne effectivement '21:00:00' ne veut rien dire.
Mais si l'on ajoute 2 heures à l'heure constatée à '10:00:00' celà donne significativement l'heure '12:00:00'
Ou si l'on fait la différence entre un temps constaté à '11:00:00' et un autre déjà constaté à '10:00:00' cela donne logiquement la durée 1 heure (et non pas un temps 01:00:00 qui est lu : une heure du matin)

Donc la relation entre les temps est une durée exprimée en nombre et non en temps.

N'est-ce pas les gars :?:
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 25 Messages

28 nov. 2006, 18:35

salut !
Oh P.......Je suis un peu fatigué je viens de metaper 50 kms de vtt sous la flotte mais bon ! J'ai plutot de la chance Bref ceci dit,
Pour l'addition de 2 "temps"en fait qui correspondent a 2 durées de 2 épreuves donc en fait le libellé exact est "duree". On utilise plus "temps" en sport,c'est pour cela que j'ai dit temps. On ne compte pas l'heure de depart. soit dit en passant ce que tu as ecrit est tres interessant et fort logique :P
A+