Выборка из базы (если дата > сегодня)

  • Автор темы Автор темы KorP
  • Дата начала Дата начала

KorP

Новичок
Выборка из базы (если дата > сегодня)

есть таблица:
дата | текст
18.02.2007 | xxx
01.03.2007 | yyy

необходимо выводить из базы те записи, где дата больге чем сегодня, пишу запрос:
PHP:
SELECT * FROM `table` WHERE `date` > '$today' ORDER BY `date` LIMIT 0 , 30

сегодняшнее число вычисляю просто:
PHP:
$today = date("d.m.Y");

дата в базе это varchar(10), куда в ручную забивается дата

в итоге ничего не выводится, если изменить условия с > на < выводятся все записи...в чём я не прав, почему не работает? подскажите пожалуйста
 
Откуда MySQL должен знать что у тебя в varchar-поле хранится дата?
А если он этого не знает откуда он должен знать как выполнять сравнение?
Вот он и сравнивает твои "даты" как строки.

Храни дату в предназначенном для этого формате DATE.
Или же в UNIX_TIMESTAMP
 
а не лучше записывать в базу данные time() и потом уже сравнивать... от этого числа?
 
Поле таблицы сделать DATE, почитать в мане про чудо функции для работы с датами, и улыбаться во все зубы.

А вообще так и должно выводиться как ты описываешь, если у тебя дат будующего там нет. (Ты ж не написал какие у тебя там даты содержатся).
 
serglt
01.03.2007
это прошедшая дата?

переделал в DATE, сменил формат своего вывода даты, теперь всё ок, осталось уговорить вывод из базы в формате (d.m.Y) работать нормально
 
ну, это совсем просто.
посмотреть в документации, как это делается
 
Фанат
это просто, я и не спорю, я и форум почитал, если не вылечу - обращусь - спасибо!
 
KorP, тип DATE в БД MySQL хранится в виде YYYY-MM-DD, поэтому дату нужно вычислять в виде date('Y-m-d'), а не с точками, как ты написал.
 
maxru
Для данной задачи этого не надо.
Если KorP пройдет по ссылкам от Фаната и внимательно почитает, то (надеюсь) поймет, что в запрос вообще не надо подставлять переменную из PHP.
 
Сверху