DATE_FORMAT()
vrátí řetězec, nikoli datum. Předání 3 řetězcových argumentů do BETWEEN
... kdo ví, co se to vrátí.
Chcete-li uvolnit svůj kód zpět, použijte:
$week_start = date('Y-m-d',time()+( 1 - date('w'))*24*3600);
$week_end = date('Y-m-d',time()+( 7 - date('w'))*24*3600);
k formátování dat způsobem, který mySQL očekává, a:
WHERE
start_date BETWEEN '".$week_start."' AND '".$week_end."'
v dotazu.
Nebo pokud dáváte přednost objektově orientovanému přístupu, udělejte něco takového:
$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);
Poté ve svém dotazu proveďte:
WHERE
start_date
BETWEEN '".$week_start->format('Y-m-d')."'
AND '".$week_end->format('Y-m-d')."'
Pak pro všechno ostatní můžete formát opakovat, jak si přejete:
echo $date->format('d-m-Y'); // etc