在数小时内使用DATE_SUB的Symfony2 SQL查询

Cre*_*e3k 1 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();
Run Code Online (Sandbox Code Playgroud)

但是我想做12个小时,现在是1天。当我像这样更改它时:

DATE_SUB(CURRENT_DATE() , 12, 'HOUR')")
Run Code Online (Sandbox Code Playgroud)

我收到一个错误消息,该方法 DATE_SUB仅适用于DAYS和MOUNTHS。

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

Mat*_*mas 5

您不需要注册自定义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();
Run Code Online (Sandbox Code Playgroud)