簡體   English   中英

在數小時內使用DATE_SUB的Symfony2 SQL查詢

[英]Symfony2 sql query with DATE_SUB in hours

我想從最近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。

如何獲得時間? 還有其他方法嗎?

您不需要注冊自定義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();

2.5版本開始在Doctrine是可能的。請注意,它現在在RC2中。 檢查Jiragithub

您還可以使用自己喜歡的任何參數注冊自己的sql函數,並將其轉換為date_sub 檢查我的答案symfony docdoctrine doc怎么做

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM