DATE_FORMAT()
zwraca ciąg, a nie datę. Przekazywanie 3 argumentów ciągu do BETWEEN
... kto wie, co to wróci.
Aby cofnąć przypisanie kodu, użyj:
$week_start = date('Y-m-d',time()+( 1 - date('w'))*24*3600);
$week_end = date('Y-m-d',time()+( 7 - date('w'))*24*3600);
aby sformatować daty zgodnie z oczekiwaniami mySQL i:
WHERE
start_date BETWEEN '".$week_start."' AND '".$week_end."'
w zapytaniu.
Lub jeśli wolisz podejście zorientowane obiektowo, zrób coś takiego:
$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);
Następnie w zapytaniu wykonaj:
WHERE
start_date
BETWEEN '".$week_start->format('Y-m-d')."'
AND '".$week_end->format('Y-m-d')."'
Następnie we wszystkim innym możesz powtórzyć format, jak chcesz:
echo $date->format('d-m-Y'); // etc