Mysql
 sql >> Base de données >  >> RDS >> Mysql

PDO PHP - Trouver toutes les lignes entre 2 dates - affiche vide

DATE_FORMAT() renvoie une chaîne, pas une date. Passer 3 arguments de chaîne à BETWEEN ... qui sait ce que cela va donner.

Pour désosser votre code, utilisez :

$week_start = date('Y-m-d',time()+( 1 - date('w'))*24*3600);  
$week_end =  date('Y-m-d',time()+( 7 - date('w'))*24*3600); 

pour formater vos dates comme mySQL l'attend, et :

WHERE 
  start_date BETWEEN '".$week_start."' AND '".$week_end."'

dans la requête.

Ou si vous préférez une approche orientée objet, procédez comme suit :

$week_start = new DateTime; 
$week_end = new DateTime;
$week_start->setTimestamp(time()+( 1 - date('w'))*24*3600)); 
$week_end->setTimestamp(time()+( 7 - date('w'))*24*3600);

Ensuite, dans votre requête, faites :

WHERE 
  start_date 
      BETWEEN '".$week_start->format('Y-m-d')."'
      AND '".$week_end->format('Y-m-d')."'

Ensuite, pour tout le reste, vous pouvez répéter le format comme vous le souhaitez :

echo $date->format('d-m-Y'); // etc