DATE_FORMAT()
returnerer en streng, ikke en dato. Sender 3 strengargumenter til BETWEEN
... hvem ved, hvad det vil returnere.
Brug:
for at fjerne din kode baglæns$week_start = date('Y-m-d',time()+( 1 - date('w'))*24*3600);
$week_end = date('Y-m-d',time()+( 7 - date('w'))*24*3600);
at formatere dine datoer på den måde, mySQL forventer, og:
WHERE
start_date BETWEEN '".$week_start."' AND '".$week_end."'
i forespørgslen.
Eller hvis du foretrækker en objektorienteret tilgang, så gør noget som dette:
$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);
I din forespørgsel skal du gøre følgende:
WHERE
start_date
BETWEEN '".$week_start->format('Y-m-d')."'
AND '".$week_end->format('Y-m-d')."'
Så for alt andet kan du ekko formatet, som du ønsker:
echo $date->format('d-m-Y'); // etc