Добрый день.
В базе хранится дата в формате unix.
Пользователь вводит дату для поиска в формате d.m.Y (другие форматы можно потом дописать).
Как сравнить дату введённую пользователем, например 30.06.2013 с датой в unix формате с точностью до дня, месяца или года, используя CDbCriteria.
Мой код такой:
public function search()
{
$criteria = new CDbCriteria;
$criteria->addSearchCondition(‘date_create’, strtotime($this->date_create), true, ‘LIKE’);
return new CActiveDataProvider($this, array(‘criteria’ => $criteria));
}
НО: здесь сравнение идёт с точностью до секунд.
Можно пойти от обратного и использовать функции БД для работы с датой, на примере MySQL:
$criteria->addSearchCondition('DATE_FORMAT(date_create, "%d.%m.%Y")', $this->date_create, true, 'LIKE');
как то так, вот по функциям http://www.mysql.ru/docs/man/Date_and_time_functions.html
ineersa
(Ineersa)
3
Возможно воспользоватся функцией Yii для парсинга даты.
Например в вашем случае:
$this->date_create = date('Y-m-d', CDateTimeParser::parse($this->date_create, 'dd.MM.yyyy'));
$criteria->compare('create_date',$this->create_date);
Это если ваша дата хранится в формате date. Для других просто измените шаблон ‘Y-m-d’ на нужный вам.