我正在使用DateTime对象,并且遇到了此问题来获取特定日期的活动。
在控制器中,我执行以下查询:
$date = new 'DateTime('today');
$activity = $em->getRepository('MyBundle:myEntity')->findOneBy(array(
'activity_date' => $date
));
此查询的结果是null
,但是当我以这种方式定义参数日期时:
$date = new 'DateTime('Wednesday, January 14, 2015');
我得到了与此日期匹配的活动。为什么today
不起作用?
我相信评论者@prodigitalson
是对的。当你说today
这实际上是now
格式化为 YYYY-MM-DD HH:MM:SS
.
现在,如果您的 DBMS 列属于 date
类型,DBMS 将首先规范化两个值,然后才继续比较。
如果传入参数的值为 2014-01-14 16:47:20
,则将其与 DBMS 值 2014-01-14 00:00:00
进行比较将不匹配记录。
请尝试以下操作:
$date = new 'DateTime(); // no need for explicit `today`
$date->setTime(0,0,0); // reset hours, minutes and seconds to 0
$activity = $em->getRepository('MyBundle:myEntity')->findOneBy(array(
'activity_date' => $date
));
这行得通吗?