dae heure seconde ... entre deux date ...

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2006, 12:58

Bonjour,

vola, je stoche deux date dans ma base : en datetime

une c'est le jour de l'interevntion , l'autre c'est 7 jours plus tard. jsuque la aucun probleme.

MAis mnt, je voudrai sur une autre page recupere la date du jour meme, pour la compare avec celle de 7 jour plus tard pour pouvoir afficher soit reste : 3j 18h 24m 11s
ou en retard de 4j 11h12m01s

qui peut m'aider?
Merci d'avance

Eléphant du PHP | 312 Messages

01 mars 2006, 13:04

Trouvé dans la doc MySQL :
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00', '2000:01:01 00:00:00.000001');
-> '-00:00:00.000001'
mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001','1997-12-30 01:01:01.000002');
-> '46:58:57.999999'
Donc convertis tes dates pour les avoir sous la forme aaaa-mm-jj hh:mm:ss et utilise mysql pour te les comparer.

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2006, 13:06

et comment j'obtient la date du jours????

Eléphant du PHP | 312 Messages

01 mars 2006, 13:12

NOW()

donc

SELECT TIMEDIFF(NOW(), '2000:01:01 00:00:00.000001');
Modifié en dernier par Hermès le 01 mars 2006, 13:13, modifié 1 fois.

Mammouth du PHP | 568 Messages

01 mars 2006, 13:13

et comment j'obtient la date du jours????
Dans le second exemple, il y a une différence de 46... Tu n'est pas sans savoir qu'i y a 24 heure par jour... Donc : 1j et 22h ;)

éhéh... J'ai mal lu la question :p désolé :p
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 312 Messages

01 mars 2006, 13:19

et comment j'obtient la date du jours????
Dans le second exemple, il y a une différence de 46... Tu n'est pas sans savoir qu'i y a 24 heure par jour... Donc : 1j et 22h ;)

éhéh... J'ai mal lu la question :p désolé :p
En parlant de ça, je viens de regarder s'il n'y avait pas possibilité à MySQL de faire tout seul la conversion d'une valeur du type "46:00:00" en une valeur du type "1d 22:00:00". Mais j'ai rien trouvé, faut faire ça soit même (cela dit c'est pas ce qu'il y a de plus compliqué).

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2006, 13:21

$ref=" SELECT TIMEDIFF(NOW(), '2000:01:01 00:00:00.000001')";
$kef = mysql_query($ref);

et puis je recupere comment ???

Mammouth du PHP | 568 Messages

01 mars 2006, 13:28

En parlant de ça, je viens de regarder s'il n'y avait pas possibilité à MySQL de faire tout seul la conversion d'une valeur du type "46:00:00" en une valeur du type "1d 22:00:00". Mais j'ai rien trouvé, faut faire ça soit même (cela dit c'est pas ce qu'il y a de plus compliqué).
En effet, j'ai parcourus la page des fonctions et rien ne semblait convenir... C'est cependant dommage, parcequ'il y a quasiement toute les possibilité (nombre de jours, nombres de mois etc..)

Celà dit, ne pas oublier que timediff() est là depuis mysql 4.1.1... Faut faire attention à, on sait jamais...

Pour toi invité, il faut que tu customise ta requête...
Pour toi, elle sera du type :
SELECT TIMEDIFF(now(), TOM_CHAMP_DATE+7JOURS)
FROM TA_TABLE
WHERE ID_INTERVENTION=X
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphant du PHP | 312 Messages

01 mars 2006, 13:33

$diff = mysql_result($kef);
preg_match("/(-?)([0-9][0-9]):([0-5][0-9]):([0-5][0-9])/", $diff, $res);

$difference = (floor($res[2]/24))."j ".($res[2]%24)."h ".$res[3]."m ".$res[4]."s";

if ($res[1] == "-")
  echo "Il y a un retard de ".$difference;
else
  echo "Il reste ".$difference;
Je n'ai pas testé cette portion de code.
Explications : on vérifie que la chaine est du type "-hh:mm:ss" ou "hh:mm:ss" et on capture les heures, les minutes et les secondes.
On divise le nombre d'heures par 24 (et on arrondi) pour connaitre le nombre de jours que ça fait.
On fait le nombre d'heures modulo 24 pour savoir combien d'heures ça fait.

Edit : Super les smileys dans le code =) je désactive.

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2006, 13:35

ok merci, mais comment je recupere cette valeur dans une variable???

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2006, 13:41

j'obtiens ceci avec le dernier code :

Warning: Wrong parameter count for mysql_result() in c:\documents and settings\stagiere\bureau\dit simplification programme\ajoutclientcompletdb.php on line 235

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2006, 13:45

ok, il manquai un ,0

mnt le soucis c'est qu'il me mets tjrs reste 2j20h au y reste 7j ...

Eléphant du PHP | 312 Messages

01 mars 2006, 13:47

oui je suis pas un habitué du mysql_result :
$row = mysql_fetch_row($kef);
$diff = $row[0];
Et normalement $diff vaudra le résultat de la requete SQL.

Eléphant du PHP | 312 Messages

01 mars 2006, 13:48

Affiche-nous ta requête et le résultat qu'on voye le problème.

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2006, 14:01

SELECT TIMEDIFF(now(),delai) FROM intervention WHERE idinter='205'