Bonjour,
j'ai une bdd sql dans laquelle il y a une table avec un champ format datetime.
j'ai un formulaire dans lequel je saisis une date format datetime, ainsi qu'une tolérance en minutes;
je cherche à faire une requete pour retourner tous les enregistrements de la table dont la date est égale à la date saisie, avec un delta entre les 2 dates inférieur à la tolérance en minute.
ma requete est la suivante :
j'utilise la fonction temps_ecoule , dont le code vient de ce site, et qui permet de calculer en minutes l'écart entre 2 dates :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $requete="SELECT * FROM table WHERE ('temps_ecoule(Date,$date_saisie)'<='intval($tolerance)'));";
le probleme est qu'avec cette requete il ne trouve jamais de résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function temps_ecoule ($date1, $date2) { list ($annee1,$mois1,$jour1,$heure1,$min1,$sec1)=sscanf($date1,"%4s-%2s-%2s %2s:%2s:%2s"); list ($annee2,$mois2,$jour2,$heure2,$min2,$sec2)=sscanf($date2,"%4s-%2s-%2s %2s:%2s:%2s"); $timestamp1 = mktime ($heure1, $min1, $sec1, $jour1, $mois1, $annee1); $timestamp2 = mktime ($heure2, $min2, $sec2, $jour2, $mois2, $annee2); $delta = intval(abs($timestamp2 - $timestamp1)/60); return $delta; }
pourtant en testant les variables j'ai bien un nombre entier pour le temps ecoule et pour la tolerance.
je ne vois pas d'ou viens le probleme...si vous voyez merci de m'aider !
Partager