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

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), куда в ручную забивается дата

в итоге ничего не выводится, если изменить условия с > на < выводятся все записи...в чём я не прав, почему не работает? подскажите пожалуйста
 

voituk

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

Храни дату в предназначенном для этого формате DATE.
Или же в UNIX_TIMESTAMP
 

Михаил6666

Новичок
а не лучше записывать в базу данные time() и потом уже сравнивать... от этого числа?
 

serglt

Анус, ой, Ахтунг
Поле таблицы сделать DATE, почитать в мане про чудо функции для работы с датами, и улыбаться во все зубы.

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

KorP

Новичок
serglt
01.03.2007
это прошедшая дата?

переделал в DATE, сменил формат своего вывода даты, теперь всё ок, осталось уговорить вывод из базы в формате (d.m.Y) работать нормально
 

Фанат

oncle terrible
Команда форума
ну, это совсем просто.
посмотреть в документации, как это делается
 

KorP

Новичок
Фанат
это просто, я и не спорю, я и форум почитал, если не вылечу - обращусь - спасибо!
 

maxru

МИФИст
KorP, тип DATE в БД MySQL хранится в виде YYYY-MM-DD, поэтому дату нужно вычислять в виде date('Y-m-d'), а не с точками, как ты написал.
 

GemVit

Новичок
maxru
Для данной задачи этого не надо.
Если KorP пройдет по ссылкам от Фаната и внимательно почитает, то (надеюсь) поймет, что в запрос вообще не надо подставлять переменную из PHP.
 
Сверху