几小时内使用DATE_SUB进行Symfony2 sql查询

时间:2014-09-29 11:42:03

标签: mysql date symfony

我想从过去12小时的数据库记录中获取。

我在控制器中有这个:

$em = $this->getDoctrine()->getManager();
        $query = $em->createQuery("SELECT e FROM MainCoreBundle:Event e WHERE e.date >= DATE_SUB(CURRENT_DATE() , 1, 'DAY')");
        $statement = $query->getResult();

但我想让它持续12个小时,现在是1天。当我改变它时:

DATE_SUB(CURRENT_DATE() , 12, 'HOUR')")

我收到错误,此方法 DATE_SUB 仅适用于DAYS和MOUNTHS。

如何获得时间?还有其他方法吗?

2 个答案:

答案 0 :(得分:4)

您无需注册自定义DQL函数!

这可以通过标准原则来完成,但使用更好的方法。

   $em = $this->getDoctrine()->getManager();
   $qb = $em->createQueryBuilder();

   $results = $qb->select('e')
                 ->from('MainCoreBundle:Event', 'e')
                 ->where('e.date >= :date')
                 ->setParameter('date', new \DateTime('-12 hours'))
                 ->getQuery()
                 ->getOneOrNullResult();

答案 1 :(得分:0)

Doctrine版本以来2.5版本可以使用。请注意它现在在RC2中。 查看Jiragithub

您也可以使用您喜欢的任何参数注册自己的sql函数,并将其转换为date_sub。查看my answersymfony docdoctrine doc如何操作