Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO PHP - Finde alle Zeilen zwischen 2 Daten - zeigt leer

DATE_FORMAT() gibt einen String zurück, kein Datum. Übergeben von 3 String-Argumenten an BETWEEN ... wer weiß, was das bringt.

Um Ihren Code rückwärts zu entschlüsseln, verwenden Sie:

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

um Ihre Daten so zu formatieren, wie es mySQL erwartet, und:

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

in der Abfrage.

Oder wenn Sie einen objektorientierten Ansatz bevorzugen, tun Sie so etwas:

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

Dann tun Sie in Ihrer Abfrage:

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

Dann können Sie für alles andere das Format wie gewünscht wiederholen:

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