DATE_FORMAT()
връща низ, а не дата. Предаване на 3 низови аргумента към BETWEEN
... кой знае какво ще върне това.
За да върнете кода си назад, използвайте:
$week_start = date('Y-m-d',time()+( 1 - date('w'))*24*3600);
$week_end = date('Y-m-d',time()+( 7 - date('w'))*24*3600);
за да форматирате вашите дати по начина, по който mySQL очаква, и:
WHERE
start_date BETWEEN '".$week_start."' AND '".$week_end."'
в заявката.
Или ако предпочитате обектно-ориентиран подход, направете нещо подобно:
$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);
След това във вашата заявка направете:
WHERE
start_date
BETWEEN '".$week_start->format('Y-m-d')."'
AND '".$week_end->format('Y-m-d')."'
След това за всичко останало можете да повторите формата, както желаете:
echo $date->format('d-m-Y'); // etc