2014-09-12 8 views
9

Nie mogę używać DATEDIFF i CURRENT_TIME w repozytorium symfony2. Ten sam problem występuje, gdy korzystam z funkcji roku. Dlaczego tak się dzieje?DATEDIFF nie działa w 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); 

ta kwerenda działa poprawnie, jeśli nie korzystać z powyższych funkcji

+0

A jeśli zapisać wynik do zmiennej, co 'var_dump()' powie? – Yang

+0

Wydaje się, że to nie jest problem z Symfony (lub Doktryną). Może być problem w MySql. Sprawdź swoją wersję MySql. Funkcja DATEDIFF() uruchomiona na v4.1.1 –

+0

Jak dokładnie nie możesz jej użyć? Czy został zgłoszony wyjątek? Czy zwracany wynik różni się nieco od oczekiwanego? Proszę to określić, w przeciwnym razie trudno odpowiedzieć na to pytanie. – kix

Odpowiedz

22

bazę na link (DQL Functions) Jak DATEDIFF jest określony i jest ważna w doktrynie po prostu trzeba zmienić go z DATEDIFF(expr1, expr2) do DATE_DIFF(expr1, expr2).
Ponadto, jeśli pole jest polem datetime lepiej wykorzystywać CURRENT_DATE() zamiast NOW() lub CURRENT_TIME()

+0

+1 Dzięki poprawieniu mnie, byłem pewien, że nie był on jeszcze obsługiwany domyślnie :-) –

+0

Nie ma za co i dziękuję :-) – Javad