2014-09-12 15 views
9

Non riesco a utilizzare DATEDIFF e CURRENT_TIME nel repository di symfony2. Lo stesso problema c'è mentre sto usando la funzione year..why questo sta succedendo?DATEDIFF non funziona in Symfony2

return $this->getEntityManager() 
          ->createQuery("SELECT u FROM AcmeAdminBundle:AppUsers u WHERE DATEDIFF(CURRENT_TIME(), u.dob) BETWEEN :fromage AND :toage and u.country = :countries ORDER BY u.id DESC") 
          ->setParameter('fromage', $fromage) 
          ->setParameter('toage', $toage) 
          ->setParameter('countries', $countrystr); 

questa query funziona correttamente se non ho usato le funzioni di cui sopra

+0

E se si salva il risultato in una variabile, che cosa 'var_dump()' direbbe? – Yang

+0

Sembra che non sia un problema di Symfony (o Doctrine). Potrebbe essere un problema è in MySql. Controlla la tua versione di MySql. La funzione DATEDIFF() è stata avviata sulla v4.1.1 –

+0

Quanto esattamente non si è in grado di usarlo? C'è un'eccezione lanciata? O il risultato restituito differisce in qualche modo da quello che ti aspetti? Si prega di specificare questo, altrimenti la domanda è difficile da rispondere. – kix

risposta

22

Base sul link (DQL Functions) il DATEDIFF è definito ed è valido in Dottrina solo è necessario cambiarlo DATEDIFF(expr1, expr2)-DATE_DIFF(expr1, expr2).
Inoltre, se il campo è un campo datetime è meglio usare CURRENT_DATE() invece di NOW() o CURRENT_TIME()

+0

+1 Grazie a correggere me, ero sicuro che non era ancora supportato di default :-) –

+0

Prego e grazie :-) – Javad