Bon, c'est au final, l'information sur un anniversaire potentiel durant une période de présence.
Donc, j'ai la présence de personnes entre 2 dates, et une date de naissance située dans une même table.
Dans ma requête sql, si la date de debut de séjour et celle de fin sont sur une même année, cette partie de requête fonctionne :
$interval="DATE_FORMAT(naissance,'%m%d') BETWEEN DATE_FORMAT(debut_sejour, '%m%d') AND DATE_FORMAT(fin_sejour, '%m%d') ";
Par contre, lorsque la date de séjour et celle de fin sont à cheval entre 2 années, je n'arrive pas à trouver la formule.J'ai essayé :
1/
$interval="((DATE_FORMAT(naissance,'%m%d') BETWEEN DATE_FORMAT(debut_sejour, '%m%d') AND '12-31') or (DATE_FORMAT(naissance,'%m%d') BETWEEN '01-01' and DATE_FORMAT(fin_sejour, '%m%d'))) ";
2/
$interval="((DATE_FORMAT(naissance,'%m%d') BETWEEN DATE_FORMAT(debut_sejour, '%m%d') AND DATE_FORMAT('12-31', '%m%d')) or (DATE_FORMAT(naissance,'%m%d') BETWEEN DATE_FORMAT('01-01', '%m%d') and DATE_FORMAT(fin_sejour, '%m%d'))) ";
Toutefois, si je décompose ma requête :
$interval="((DATE_FORMAT(naissance,'%m%d') BETWEEN DATE_FORMAT(debut_sejour, '%m%d') AND DATE_FORMAT('0000-12-31 00:00:00', '%m%d'))) ";
- Ca marche (1 anniversaire dans ma table de test)et si je fais ensuite
$interval="((DATE_FORMAT(naissance,'%m%d') BETWEEN DATE_FORMAT('0000-01-01 00:00:00', '%m%d') AND DATE_FORMAT(fin_sejour, '%m%d'))) ";
- Ca marche, mais il me sort 23 anniversaires, alors qu'en réalité (dans ma table de travail), il n'y en a que 4..J'intègre bien sûr la variable $interval dans la requête finale et comme je dis, ça fonctionne nicquel dans le premier cas (annee de fin de séjour = année de debut de sejour) !
Auriez-vous une aide à m'apporter ? Sachant que je ne fait qu'un ->rowcount() de cette requête, donc seul le nombre de personnes concernées m'est utile.
En vous remerciant !