Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在1.6版中按日期筛选日期时间列?_Php_Mysql_Date_Datetime_Propel - Fatal编程技术网

Php 如何在1.6版中按日期筛选日期时间列?

Php 如何在1.6版中按日期筛选日期时间列?,php,mysql,date,datetime,propel,Php,Mysql,Date,Datetime,Propel,我想筛选结果,如中所示 $searchDate = "2013-03-01"; $query->usePublicationQuery() ->filterByPublishedAt($searchDate) ->endUse(); 但是,问题是,此列中的值也包含时间,即它们实际上是时间戳(例如“2013-03-01 08:27:12”),我不允许在模式中更改时间戳。那么,忽略时间,我怎么可能匹配纯日期呢?上述查询仅与时间为2

我想筛选结果,如中所示

$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, SomePeer::CREATED_AT.' LIKE "'.$date.'%"',Criteria::CUSTOM);

这样,Propel就不会试图将其转换为DateTime对象。

我认为您选择了最佳解决方案。这似乎是一个自我回答的问题。谢谢你的反馈!然后,您可以从问题中删除解决方案,将其作为答案发布并接受:)只需将解决方案作为答案复制即可。:)
$c = new Criteria();
$c->add(SomePeer::CREATED_AT, SomePeer::CREATED_AT.' LIKE "'.$date.'%"',Criteria::CUSTOM);