Вопрос № 36635: Добрый день, ув. эксперты. Возможно, вопрос не совсем по теме - здесь и PHP, и MySQL. Помогите, пожалуйста, с кусочком кода. Надо получить текущую дату (PHP) и при выборке из таблицы MySQL использовать условие:
если paid=0, то отдавать все записи...
Вопрос № 36.635
Добрый день, ув. эксперты. Возможно, вопрос не совсем по теме - здесь и PHP, и MySQL. Помогите, пожалуйста, с кусочком кода. Надо получить текущую дату (PHP) и при выборке из таблицы MySQL использовать условие:
если paid=0, то отдавать все записи из БД без проверки условия
если paid=1, то отдавать только записи те записи БД, у которых дата в поле placing_to >= текущей даты.
placing_to имеет тип DATETIME, paid имеет тип TINYINT(4)
Вариант примерно такой:
$cur_date = time();
SELECT * FROM mytable WHERE (paid=0) or (paid=1 AND $cur_date<placing_to)
Тем не менее, выдаются ВСЕ записи. Как все-таки правильно сравнить даты ?
Отправлен: 03.03.2006, 12:30
Вопрос задала: Tatiana L (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Cтепанов Андрей Валерьевич
Здравствуйте, Tatiana L!
Все очень просто, ответ смотрите в приложении
Приложение:
--------- Все мы будем в аду, но я буду с вилами!!
Отвечает: Ерёмин Андрей
Здравствуйте, Tatiana L!
Ну так ошибка на лицо! Функция time() возвращает количество миллисекунд, т.е. это аналог unixtime. А в базе, в поле типа DATE данных хранятся в виде "2006-03-08" (8 марта 2006 года соответственно). Поэтому нужно сделать так: $cur_date = date("Y-m-d").
Поле DATETIME - это DATE + TIME, т.е. ещё нужно добавить: $cur_date = date("Y-m-d H:i"); --------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Отправлен: 03.03.2006, 13:41
Отвечает: КиберТварь
Здравствуйте, Tatiana L!
как я помню в майСКЛ-е дата хранится в следующем формате
ГГГГ-ММ-ДД
по этому когда сравниваете данные нужно учесть этот момент
Приложение:
Ответ отправил: КиберТварь (статус: Практикант)
Отправлен: 03.03.2006, 17:23