Mysql
 sql >> Database >  >> RDS >> Mysql

PDO PHP - Trova tutte le righe tra 2 date - mostra vuoto

DATE_FORMAT() restituisce una stringa, non una data. Passaggio di 3 argomenti stringa a BETWEEN ... chissà cosa tornerà.

Per ripristinare il codice, usa:

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

per formattare le date nel modo previsto da MySQL e:

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

nella query.

Oppure, se preferisci un approccio orientato agli oggetti, fai qualcosa del genere:

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

Quindi nella tua query fai:

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

Quindi per tutto il resto, puoi fare eco al formato come desideri:

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