ottengo un errore di strano quando eseguo questa query DQL:Utilizzare una funzione DATE() in una clausola WHERE con DQL
SELECT u FROM User u LEFT JOIN u.schedule s WHERE DATE(s.timestamp) = DATE(NOW())
L'eccezione viene generata da Doctrine con il messaggio:
Expected known function, got 'DATE'
Il problema è simile a this bug, ma si riferisce alla funzione DATE() in una clausola GROUP BY e il bug è chiuso per Doctrine 2.2. In questo momento, ottengo l'eccezione con doctrine 2.4-DEV.
La query ha lo scopo di selezionare tutti gli utenti pianificati per oggi. C'è un modo per creare questo DQL? Ho testato la versione SQL in phpMyAdmin e lì la query non genera un errore. Cosa potrebbe essere sbagliato?
Doctrine2 DQL non ha una funzione DATE() o NOW(): http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html#dql-functions . Ma vuoi davvero confrontare due timestamp sulla loro uguaglianza? – memoryleak
Ho programmato i pazienti per un appuntamento (data + ora) e voglio elencare tutti i pazienti per oggi. C'è un modo brutto per farlo: preparare la dichiarazione con un oggetto php 'DateTime' per" oggi ". E dividi il campo datetime in una parte "date" e "time". Posso superare la prima parte brutta, ma la seconda è solo un problema con il tuo db perché è un problema di livello di astrazione. Ecco perché ho sperato in una soluzione in cui ciò avrebbe funzionato :) Ho provato un 'SELECT CAST (s.timestamp come DATE) come schedule_day FROM ... WHERE schedule_day =: today' ma ha restituito un errore simile ... –