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
Форумы портала PHP.SU :: Версия для печати :: как сделать выборку данных из mysql за неделю
Форумы портала PHP.SU » » Вопросы новичков » как сделать выборку данных из mysql за неделю

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

1. Paulbreaks - 27 Июля, 2014 - 21:54:18 - перейти к сообщению
Друзья я начинающий, пожалуйста помогите со следующим вопросом:
Мне нужно вывести новости за определенный промежуток времени, к примеру за неделю,
но проблема в том что в поле `data` дата пишется в формате d.m.y
тоесть 27.07.14
Перерыл весь интернет, но так и не врублюсь как сделать правильно запрос
вот так не работает:
SELECT * FROM `news` WHERE `date`>='20.07.14' and `date`<='27.07.14';

Пожалуйста подскажите как правильно. Заранее всем спасибо!
2. DelphinPRO - 27 Июля, 2014 - 22:29:08 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE date > NOW() - INTERVAL 1 WEEK


при условии, что поле date в БД правильного типа DATE или DATETIME
3. Paulbreaks - 27 Июля, 2014 - 22:32:13 - перейти к сообщению
DelphinPRO пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE date > NOW() - INTERVAL 1 WEEK


при условии, что поле date в БД правильного типа DATE или DATETIME


В том то и дело что тип varchar
4. Sail - 28 Июля, 2014 - 09:04:47 - перейти к сообщению
Paulbreaks пишет:
В том то и дело что тип varchar

В mysql есть функции для работы со строками. Например:
Цитата:
SUBSTRING_INDEX(str,delim,count)
Возвращает подстроку из строки str перед появлениям count вхождений разделителя delim. Если count положителен, то возвращается все, что находится слева от последнего разделителя (считая слева). Если count отрицателен, то возвращается все, что находится справа от последнего разделителя (считая справа):
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'
Данная функция поддерживает многобайтные величины.

Но всё-таки, быть может, в той таблице среди других полей есть нормальная дата (или unixtimestamp) создания новости?
И если нет, то стоит оценить возможность изменения структуры таблицы и сопутствующих скриптов...
5. DelphinPRO - 28 Июля, 2014 - 09:29:11 - перейти к сообщению

Paulbreaks пишет:
В том то и дело что тип varchar

Сначала создаем себе проблемы, потом героически их решаем Улыбка
6. Paulbreaks - 28 Июля, 2014 - 11:18:40 - перейти к сообщению
Всем спасибо, вопрос решен.

 

Powered by ExBB FM 1.0 RC1