Задавайте вопросы, мы ответим
Вы не зашли.
Помогите сделать запрос.
Нужно отобрать данные. Критерий - несколько дат. У столбца таблицы с датой тип - DATETIME и данные закинуты с точным указание времени. А выбрать надо данные у которых стоит дата с временем в интервале одного дня каждой запрашиваемой даты.
Пытался сделать вот так:
$st = "2010-11-11";
$sql_dates = "date >= DATE_FORMAT(NOW(),'".$st." 00:00:00') ";
$sql_dates .= "AND date < DATE_FORMAT(NOW(),'".$st." 00:00:00') + INTERVAL 1 DAY AND ";
$st = "2010-11-12";
$sql_dates .= "date >= DATE_FORMAT(NOW(),'".$st." 00:00:00') ";
$sql_dates .= "AND date < DATE_FORMAT(NOW(),'".$st." 00:00:00') + INTERVAL 1 DAY AND ";
"select id from orders where ".$sql_dates." delive_type = 1 order by id"
не работает
Заранее спасибо.
Неактивен
1. Вы путаете понятия «и» и «или». Вам нужны строки, которые удовлетворяют
одному из диапазонов дат, а не обоим. Поэтому нужно использовать «или».
2. Вы намудрили с функциями, они тут вообще не нужны.
Пользуйтесь простыми конструкциями, в них можно описать всё на пальцах, и
при этом оставить код читаемым:
WHERE (`date` BETWEEN '2010-11-11' AND '2010-11-12') OR (`date` BETWEEN '2010-11-12' AND '2010-11-13')
Если не хотите считать вторую дату, то пишите так же просто:
WHERE `date` BETWEEN '$dt' AND '$dt' + INTERVAL 1 DAY
Неактивен