sql >> Databasteknik >  >> RDS >> Mysql

PDO PHP - Hitta alla rader mellan 2 datum - visar tomt

DATE_FORMAT() returnerar en sträng, inte ett datum. Skickar 3 strängargument till BETWEEN ... vem vet vad det kommer att ge tillbaka.

För att ta bort koden bakåt, använd:

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

att formatera dina datum på det sätt som mySQL förväntar sig, och:

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

i frågan.

Eller om du föredrar ett objektorienterat tillvägagångssätt, gör något så här:

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

Gör sedan i din fråga:

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

Sedan för allt annat kan du upprepa formatet som du vill:

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



  1. Starta om mysql i php-webbläsaren, behörighetsproblem?

  2. eka något från MySQL-databasen

  3. Hur man ställer in fjärranslutning till PostgreSQL

  4. MIN SQL - Felkod:1010. Fel när databasen släpptes (kan inte rmdir; felnr:13)