2012-11-27 17 views
6

Ho bisogno di una query jpql per trovare tutti i LoadFileHistory che finishDate essere maggiore della data del currente (dal 00:00:00). Ad esempio maggiore del 27/11/2012 00:00:00.jpql data confronto oggi

Ho già questo "selezionare o da LoadFileHistory o dove o.finishDate = CURRENT_DATE" ma non mi fa nulla.

+1

Se vuoi quelli che sono maggiori perché non usi '>' invece di '='? – Alex

+0

Alex l'idea di put = CURRENT_DATE è che il confronto era con la data ma non con il tempo. Voglio dire, solo il 27/11/2012 non il 27/11/2012 alle 10:15:00 – Manuel

risposta

19

Si dovrebbe ottenere la data odierna alla query come dettagliato here (java.util.Date ha ora, minuti, secondo troppo ...)

La si dovrebbe fornirlo alla tua richiesta:

Query q = em.createQuery("select o from LoadFileHistory o where o.finishDate > :today "); 
q.setParameter("today",todaysDateObject,TemporalType.DATE); 
q.getResultList(); 
+4

'CURRENT_DATE' viene valutato alla data corrente. Vedi: http://www.objectdb.com/java/jpa/query/jpql/date – Alex

0

Nel caso in cui si desideri filtrare il livello temporale con la data. Questo ha funzionato per me.

Date now = DateUtils.addMinutes(new Date(), -15); 
Query q = em.createQuery("Select u From Users u Where u.dateCreated > :today"); 
q.setParameter("today",now,TemporalType.TIMESTAMP); 

DateUtils è di apache comune.

+0

... oppure potresti farlo senza aggiungere una dipendenza esterna e usare java.time ... 'Instant.now(). mENO (Duration.ofMinutes (15)) ' – Jules