2012-11-27 56 views
6

Tôi cần truy vấn jpql để tìm tất cả LoadFileHistory mà finishDate lớn hơn ngày hiện tại (kể từ 00:00:00). Ví dụ: ngày 27/11/2012 00:00:00.so sánh ngày jpql ngày hôm nay

Tôi đã có cái này "chọn o từ LoadFileHistory o trong đó o.finishDate = CURRENT_DATE" nhưng không nhận được gì.

+1

Nếu bạn muốn những cái nào lớn hơn tại sao bạn không sử dụng '>' thay vì '='? – Alex

+0

Alex ý tưởng của put = CURRENT_DATE là so sánh với ngày nhưng không phải với thời gian. Ý tôi là, chỉ 27/11/2012 không phải ngày 27/11/2012 10:15:00 – Manuel

Trả lời

19

Bạn sẽ nhận được ngày hôm nay với truy vấn như chi tiết here (java.util.Date có giờ, phút, giây quá ...)

Các bạn nên cung cấp cho nó để truy vấn của bạn:

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

'CURRENT_DATE' được đánh giá đến ngày hiện tại. Xem: http://www.objectdb.com/java/jpa/query/jpql/date – Alex

0

Trong trường hợp bạn đang tìm kiếm lọc mức thời gian theo ngày. Điều này làm việc cho tôi.

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 là apache chung.

+0

... hoặc bạn có thể làm điều đó mà không cần thêm phụ thuộc bên ngoài và sử dụng java.time ... 'Instant.now(). trừ (Duration.ofMinutes (15)) ' – Jules

Các vấn đề liên quan