Вопрос № 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
Отправить вопрос экспертам этой рассылки
Приложение (если необходимо):
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.