SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.11.2010 01:39:53

sNICkerssss
Участник
Зарегистрирован: 13.11.2010
Сообщений: 5

Select данных по нескольким временным интервалам

Помогите сделать запрос.
Нужно отобрать данные. Критерий - несколько дат. У столбца таблицы с датой тип - 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"

не работает sad
Заранее спасибо.

Неактивен

 

#2 13.11.2010 01:54:34

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Select данных по нескольким временным интервалам

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

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson