Туплю с sql. Помогите

L
На сайте с 17.05.2013
Offline
88
405

Есть в таблице поля даты date1 и date2

ЗАписи (id, date1, date2):

1, 2014-04-05, 2014-04-07

2, 2014-04-10, 2014-04-12

Пользователь вводит в фильтре диапазон дат(например '2014-04-05' и '2014-04-11') и получаем запрос:

SELECT * FROM table where date1>='2014-04-05' and date2<='2014-04-11'

Подскажите каким должен быть запрос чтобы если он введет даты 2014-04-01 и 2014-04-21 чтобы в результатах ему показали записи с указаными выше диапазонами

siv1987
На сайте с 02.04.2009
Offline
427
#1

date1 > '2014-04-05' and date2 < '2014-04-11'

L
На сайте с 17.05.2013
Offline
88
#2

Может Вы меня немного недопоняли. Есть записи:

1, 2014-04-05, 2014-04-07

2, 2014-04-10, 2014-04-12

Нужно сделать так чтобы при указании диапазона " с 2014-04-01 до 2014-04-21" мне выбрало эти записи. Если использовать date1 > '2014-04-05' and date2 < '2014-04-11' или больше(меньше) равно такой запрос мне не выведет нужного результата

siv1987
На сайте с 02.04.2009
Offline
427
#3

У вас два разных столбца, какой тут диапазон?

date1 > '%first date%' AND date1 < '%last date%'

date1 BETWEEN '%first date%' AND '%last date%'

(date1 > '2014-04-05' AND date2 > '2014-04-05') AND (date1 < '2014-04-11' AND date2 < '2014-04-11')

VulkanPartner
На сайте с 27.03.2014
Offline
91
#4

оператор "and" подразумевает выполнени обоих условий, поэтому не выводит нужное. Попробуйте "or"

 date1 > '2014-04-01' or date2 < '2014-04-21' 

А вообще мануалы посмотрите

https://perestroika.team/ru/ (https://perestroika.team/ru/) Perestroika Affiliates- ведущая гемблинг-партнерка. RevShare - до 60%. CPA - до 150$.
siv1987
На сайте с 02.04.2009
Offline
427
#5

если это "начало-конец" то вроде можно и так

date1 > 2014-04-06 AND date2 < 2014-04-07 AND date1 < date2

Хелпзонович
На сайте с 15.06.2005
Offline
133
#6

siv1987, а можно поинтересоваться, какой тайный смысл в условии AND date1 < date2 ??? При условии, что date1 - начало, date2 - конец некой операции. Оно просто лишнее.

luckydan, Вы так поставили ТЗ, что никто ничего не понял. Попробую я угадать. В Вашем запросе поменяйте and на or

SELECT * FROM table where date1>='2014-04-05' or date2<='2014-04-11'

Вы там держитесь! Хорошего вам настроения. Здоровья.
siv1987
На сайте с 02.04.2009
Offline
427
#7
Хелпзонович:
При условии, что date1 - начало, date2 - конец некой операции. Оно просто лишнее.

Да, в данном случае оно лишнее.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий