2012-11-27 24 views
6

मुझे सभी लोडफाइल इतिहास को खोजने के लिए एक jpql क्वेरी की आवश्यकता है जो समाप्त हो जाती है, दिनांक दिनांक (00:00:00 से) से अधिक हो। उदाहरण के लिए 27/11/2012 00:00:00 से अधिक।jpql दिनांक तुलना आज

मेरे पास पहले से ही यह है "लोडफाइल इतिहास से ओ चुनें, जहां o.finishDate = CURRENT_DATE" लेकिन मुझे कुछ भी नहीं मिलता है।

+1

यदि आप अधिक से अधिक चाहते हैं तो आप '=' के बजाय '>' का उपयोग क्यों नहीं करते? – Alex

+0

एलेक्स put = CURRENT_DATE का विचार यह है कि तुलना तिथि के साथ थी लेकिन समय के साथ नहीं थी। मेरा मतलब है, सिर्फ 27/11/2012 27/11/2012 10:15:00 – Manuel

उत्तर

19

आप की तरह सवाल के आज की तारीख मिलना चाहिए विस्तृत here

, जिसे आप आपकी क्वेरी के लिए यह आपूर्ति करना चाहिए (java.util.Date घंटा, मिनट, दूसरा भी ... है):

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

'CURRENT_DATE' का मूल्यांकन वर्तमान दिनांक तक किया जाता है। देखें: http://www.objectdb.com/java/jpa/query/jpql/date – Alex

0

यदि आप तिथि के साथ समय स्तर फ़िल्टरिंग की तलाश में हैं। यह मेरे लिए काम किया।

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); 

दिनांक उपयोग अपाचे सामान्य है।

+0

... या आप बाह्य निर्भरता जोड़ने और जावा.टाइम का उपयोग किए बिना ऐसा कर सकते हैं ... 'Instant.now()। ऋण (Duration.ofMinutes (15)) ' – Jules