Запрос Mysql - дата и интервалы - HELP

Эдди

Новичок
Могу сделать, но знаю, что будет криво. Хочу правильно.

Делаю выборку из нескольких таблиц. В выборке есть определенный набор дат (в формате date).
Кроме того в выборке есть минимальный (к примеру 7 дней) и максимальный (к примеру, 14 дней) интервалы, между которыми надо выбрать только те даты, которые туда укладываются, в зависимости от переданной переменной POST (начало отсчета).

А вопрос в том, можно ли имея на вход (изначально) определенную дату в самой выборке получить только те даты, которые укладываются между минимумом и максимумом, имея только начальную дату.

Сумбурно сказал. Могу уточнить.
 

hell0w0rd

Продвинутый новичок
Эдди, почитай про функции для работы с датами, к дате можно добавить пару дней и дальше уже выборку между ними сделать.
 

Эдди

Новичок
Я могу сделать выборку всех дат, а потом в php разобрать.
Но это неправильно. Надо выбирать только нужный диапазон дат.
 

hell0w0rd

Продвинутый новичок
Эдди, ты прочитал что я написал?
PS я говорил о sql. Это можно сделать в sql. Читай ман
 

Эдди

Новичок
Прочел. Но с interval и add_date у меня проблемы. Честно говорю. Очень прошу помощи.

Допустим, речь не о выборке, об одной таблице, чтобы проще:
В каждой строке дата (формат Y-m-d), минимальное количество дней (просто цифра количества дней, скажем 7) и максимальное количество дней (тоже цифра дней, скажем 14).
Есть переменная POST из календаря с выбором определенной даты (в формате Y-m-d).
Надо выбрать все даты, которые попадают в интервал между датой POST+минимальное количество дней и ограниченно максимальным количеством дней.

Ну как будет?
Код:
SELECT date, min, max
FROM t1
WHERE
(а дальше по интервалам затык) выбрать все даты, которые между POST-переменной + min и ограничить max)
 

Эдди

Новичок
Гуру. Подскажите, плиз. За выходные надо закончить с этим.
Даты хранятся в таблице в формате mysql.
В тех же строках хранятся числа "минимальное количество дней" и "максимальное количество дней. В простом числовом формате.
Плюс есть переменная тоже в том же формате Y-m-d, от которой надо плясать.
В одном запросе надо, ну я же уже писал:

Код:
SELECT date, min, max
FROM t1
WHERE
(а дальше по интервалам затык) выбрать все даты, которые между POST-переменной + min и ограничить max)
 

Эдди

Новичок
Разобрался:
Код:
AND date >= DATE_ADD( '2014-06-28', INTERVAL `min`
DAY )
AND date <= DATE_ADD( '2014-06-28', INTERVAL `max`
DAY )
 

artoodetoo

великий и ужасный
у тебя реально поле называется date ? min и max это тоже поля? в этой же таблице???????

попадание в промежуток значений в SQL обычно выражают через BETWEEN
WHERE x BETWEEN y AND z , что аналогично x>=y and x<=z но нагляднее
 

Эдди

Новичок
Нет. Поле дат - условное название.
А вообще between, конечно, интереснее. Я про него и забыл.
Изменю.
 

AnrDaemon

Продвинутый новичок
Раз сами не понимаете, что творите, давйте общаться без условностей. Здесь все люди взрослые, в иносказаниях нет нужды.
 

Shinobi

Новичок
Я [нашел] целую статью на эту тему работа с датами в СУБД MySql. Там описаны прикольные подходы к сортировки по дате. Конвертирование строки в DATE. Как получить строку датой прописью. Да и еще сортировка DATETIME. Описан метод выборки для каждой записи последню дату. Вообщем очень познавательно.
 
Последнее редактирование модератором:
Сверху