Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема при использовании BETWEEN

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
nik_grey
Отправлено: 01 Сентября, 2014 - 12:40:58
Post Id


Гость


Покинул форум
Сообщений всего: 73
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Доброе время суток.
Суть проблемы такова - в БД хранятся товары и время их добавления. Данные летят в БД летят в формате 'dd.mm.yy' в поле с типом 'VARCHAR'.
При поиске товаров по дате использую следующий запрос -
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT FIELDS FROM TABLE WHERE DATA BETWEEN '$start' AND '$finish'
$start и $finish - значение переменных которые пользователей выбирает для диапазона даты при поиске..
В данном варианте sql-запросе сравниваются только данные до точки.. Т.е. если $start='01.08.2014', $finish='06.09.2014', то в результате только будет - 05.08.2014, а данные за 20.08.2014 и 22.08.2014 не выводятся..
Как изменить запрос или структуру для корректного поиска?
Заранее спасибо.

(Отредактировано автором: 01 Сентября, 2014 - 12:41:27)

 
 Top
RickMan
Отправлено: 01 Сентября, 2014 - 12:48:49
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]tion_str-to-date используй это для перевода твоих дат в нормальный формат. А вообще даты не хорошо хранить в varchar. Еще понимаю в unix формате, но не в varchar.
 
 Top
nik_grey
Отправлено: 01 Сентября, 2014 - 13:50:42
Post Id


Гость


Покинул форум
Сообщений всего: 73
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




RickMan пишет:
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]tion_str-to-date используй это для перевода твоих дат в нормальный формат. А вообще даты не хорошо хранить в varchar. Еще понимаю в unix формате, но не в varchar.

спасибо. буду разбираться
 
 Top
Мелкий Супермодератор
Отправлено: 01 Сентября, 2014 - 13:59:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




nik_grey пишет:
или структуру для корректного поиска?

Использовать тип данных date.

Костыль с переформатированием даты налету исключает использование индексов для этого поля, потому только менять структуру. Если пишется чёрти-откуда и непонятно как - можно сделать ещё одно поле с датой, только нормальное и заполнять его триггерами.


-----
PostgreSQL DBA
 
 Top
nik_grey
Отправлено: 01 Сентября, 2014 - 15:36:19
Post Id


Гость


Покинул форум
Сообщений всего: 73
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Мелкий пишет:
nik_grey пишет:
или структуру для корректного поиска?

Использовать тип данных date.

Костыль с переформатированием даты налету исключает использование индексов для этого поля, потому только менять структуру. Если пишется чёрти-откуда и непонятно как - можно сделать ещё одно поле с датой, только нормальное и заполнять его триггерами.

После изменения varchar на date поиск через between работает..
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB