Помогите составить запрос. Мне нужно из таблицы брать данные за неделю, только не за последние 7 дней, а именно с понедельника по воскресенье включительно. Т.е. когда начинается другая неделя, данные будут новые. Никак не могу додуматься до того, чтобы составить нужное условие. Вроде как, я полагаю, необходимо найти стартовую точку (а это понедельник) и с соответствующим интервалом (date('w')). А может и не так мыслю... Вообщем выручайте.
Если за текущую неделю, то: 1. Узнать метку времени на начало недели. 2. Выбрать записи, у которых метка времени больше. Если за прошедшую, то: 1. Узнать метку времени на начало недели. 2. Узнать метку времени на конец недели. 3. Выбрать записи, у которых метка времени между этими значениями. Узнать метку времени можно с помощью date и mktime
AlexGousev спасибо. Вот тут мне никак не додуматься, как узнать дату текущего понедельника в какой бы это день не было? Ведь при наступлении следующего понедельника метка времени должна автоматически изменяться. ))
я, наверное, тугодум, но другого решения ну никак не найти =/ PHP: <?php $day1 = date("w"); $day2 = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d"), date("Y"))); if($day1 == 1) { $d = $day2; } elseif($day1 == 2) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-1, date("Y"))); } elseif($day1 == 3) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-2, date("Y"))); } elseif($day1 == 4) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-3, date("Y"))); } elseif($day1 == 5) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-4, date("Y"))); } elseif($day1 == 6) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-5, date("Y"))); } elseif($day1 == 0) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-6, date("Y"))); } ?> p.s. не покидает мысль, что можно сделать все по-другому...
PHP: <?php if($day1 == 1) { $d = $day2; } elseif($day1 == 2) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-1, date("Y"))); } elseif($day1 == 3) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-2, date("Y"))); } elseif($day1 == 4) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-3, date("Y"))); } elseif($day1 == 5) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-4, date("Y"))); } elseif($day1 == 6) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-5, date("Y"))); } elseif($day1 == 0) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-6, date("Y"))); } В плане объемности этот код можно заменить на этот: PHP: <?php if($day1 == 1) { $d = $day2; } elseif($day1 == 0) { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-6, date("Y"))); } else { $d = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-$day1-1, date("Y"))); } А вообще, если выборка из Mysql - http://www.mysql.ru/docs/man/Date_and_t ... tions.html Еще можно так: PHP: <?php echo 'От '.date("Y-m-d", strtotime("Monday", time()-3600*24*6)).' до '.date("Y-m-d", strtotime("Sunday"));