2009-10-20 3 views
0

У меня есть обобщенный поиск, где я ищу средние цены за различные дни недели. Проблема в том, что я не уверен, как запросить странный диапазон. 1-7 работает нормально, (понедельник-воскресенье), но если пользователь проходит воскресенье к вторнику ... т.е. 7-2, он не работает.sql between for DAYSOFWEEK

1-7 (1,2,3,4,5,6,7) 7-2 (7,1,2)

т.д.

Как еще я могу передать диапазон это более разумно или что-то еще МЕЖДУ?

SELECT item_id, DAYOFWEEK(bookdate) as date, bookdate, AVG(price) AS price 
FROM `availables` WHERE (item_id = 16 and DAYOFWEEK(bookdate) BETWEEN 2 AND 7) 
GROUP BY DAYOFWEEK(bookdate) 
+0

Я бы использовал даты, которые существуют, но я работаю со скребковыми данными, и даты могут не существовать поэтому он использует прошлые даты на не конкретные дни недели для средних цен. Цены IE, как правило, выше в пятницу и субботу, но ниже по воскресеньям и понедельникам. – holden

ответ

3

Возможно, то, что вы ищете, в синтаксисе:

SELECT item_id, DAYOFWEEK(bookdate) as date, bookdate, AVG(price) AS price 
FROM `availables` WHERE (item_id = 16 and DAYOFWEEK(bookdate) IN (7,1,2)) 
GROUP BY DAYOFWEEK(bookdate) 
2

ли это с 'в' пункте, например: День недели (bookdate) в (1,2,7)

Это также позволяет гибкость непрерывных дат (например, записи только для понедельника и пятницы)

Смежные вопросы