我如何过滤日期-时间列的日期在推进1.6



我想过滤结果,如

$searchDate = "2013-03-01";
$query->usePublicationQuery()
            ->filterByPublishedAt($searchDate)
            ->endUse();

然而,问题是,这列中的值也包含时间,即它们实际上是时间戳(例如:"2013-03-01 08:27:12"),并且不允许在模式中更改它。那么我怎么可能匹配忽略时间的纯日期呢?上面的查询只匹配时间为2013-03-01 00:00:00的条目。但是我想要所有以2013-03-01为日期的条目,而不管时间。

我已经想出了这个解决方案,它是有效的:

->filterByPublishedAt(array("min" => $searchDate." 00:00:00", "max" => $searchDate." 23:59:59"))

对于那些使用Criteria实例并且不想/不能切换到编写查询的"新方式"的人:只需使用Criteria::CUSTOM而不是Criteria::LIKE。

$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对象。

相关内容

  • 没有找到相关文章

最新更新