|
|
|
| Здравствуйте уважаемые форумчане.
Исходные данные:
существует таблица, где имеются три поля: day, month, year (все поля типа varchar), где хранятся соответственно
значения дней, месяцов и годов.
Необходимый результат:
Зделать выборку в промежутке между указанными юзером датами ( т.е. с дд.мм.гггг по дд.мм.гггг).
Проблема:
При попытке выбрать записи допустим за один месяц ( 01|08|2008 по 31|08|2008 ) всё чудесно и хорошо
...AND day>=01 AND day<=30 AND month>=08 AND month<=08 AND year>=2008 AND year<=2008
|
Если же мы поимели наглость указать даты со средины одного месяца по середину другого ( 15|08|2008 по 15|09|2008 )
...AND day>=15 AND day<=15 AND month>=08 AND month<=08 AND year>=2008 AND year<=2008
|
на выходе получаем записи только за один день ( 15|08|2008 ).
Я понимаю что проблема тут
...day>=15 AND day<=15...
|
Вопрос:
Чё делать, всмысле как организовать запрос? | |
|
|
|
|
|
|
|
для: new_user
(04.09.2008 в 11:33)
| | Что мешает изменить формат хранения даты на более адекватный? | |
|
|
|
|
|
|
|
для: Trianon
(04.09.2008 в 11:35)
| | В таблице более 700 записей. | |
|
|
|
|
|
|
|
для: new_user
(04.09.2008 в 12:07)
| | SQL-запрос пересчитает всю таблицу за сотую долю секунды, а вероятнее всего, еще быстрее.
совет остается в силе, даже если в таблице 700 тысяч записей. | |
|
|
|
|
|
|
|
для: Trianon
(04.09.2008 в 12:14)
| | Хоршо, допустим у нас теперь есть только одно поле (к примеру TIMESTAMP).
Что по сути это изменит, кроме того что сравнение придётся производить через функцию DATE_FORMAT(), т.е.
...DАТЕ_FОRМАТ(`date_field`, '%d')>=15 AND DАТЕ_FОRМАТ(`date_field`, '%d')<=15...
|
Нужно изменить саму логику запроса, или я что то не понимаю? | |
|
|
|
|
|
|
|
для: new_user
(04.09.2008 в 12:56)
| | Подходящим форматом будет DATE , а не TIMESTAMP , но в данном случае это несущественно.
После этого можно прямо писать запросы
SELECT .... WHERE date_field BETWEEN '2007-11-17' AND '2008-08-25'
Естественно, даты пользователя перед вклеиванием в запрос нужно приводить к стандартному формату. | |
|
|
|
|
|
|
|
для: Trianon
(04.09.2008 в 13:07)
| | Спасибо!!! | |
|
|
|
|
|
|
|
|
для: ronin80
(04.09.2008 в 11:37)
| | >чё то наподобие обсуждалось
тема не имеет отношения к. | |
|
|
|