sql >> Base de Datos >  >> RDS >> Mysql

PDO PHP - Encuentra todas las filas entre 2 fechas - muestra en blanco

DATE_FORMAT() devuelve una cadena, no una fecha. Pasar 3 argumentos de cadena a BETWEEN ... quién sabe qué va a devolver eso.

Para descifrar su código, utilice:

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

para formatear sus fechas de la forma en que mySQL espera, y:

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

en la consulta.

O si prefiere un enfoque orientado a objetos, haga algo como esto:

$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);

Luego, en su consulta haga:

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

Luego, para todo lo demás, puede repetir el formato como desee:

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