我想按照
过滤结果$searchDate = "2013-03-01";
$query->usePublicationQuery()
->filterByPublishedAt($searchDate)
->endUse();
然而,问题是,此列中的值还包含时间,即它们实际上是时间戳(例如“2013-03-01 08:27:12”)并且我不允许更改在架构中。那么如何才能与无视时间的纯粹日期相匹配呢?以上查询仅匹配时间为2013-03-01 00:00:00的条目。但我希望2013-03-01的所有参赛作品都是日期,无论时间如何。
答案 0 :(得分:10)
我已经找到了这个解决方案并且有效:
->filterByPublishedAt(array("min" => $searchDate." 00:00:00", "max" => $searchDate." 23:59:59"))
答案 1 :(得分:0)
对于那些使用Criteria实例并且不想/不能切换到编写查询的“新方法”的人:只需使用Criteria :: CUSTOM而不是Criteria :: LIKE。
E.g。
$c = new Criteria();
$c->add(SomePeer::CREATED_AT, $date.'%', Criteria::LIKE);
变为
$c = new Criteria();
$c->add(SomePeer::CREATED_AT, SomePeer::CREATED_AT.' LIKE "'.$date.'%"',Criteria::CUSTOM);
这样,Propel不会尝试将其转换为DateTime对象。