2012-03-09 93 views
0

我有一個'Log'實體,其中包含有關溫度的信息。 我試圖建立具有隻有兩個字段的報告:如何查詢JPA中的時間戳記間隔?

quantity : this field will tell how much my search should look 
interval : minutes, hours, days, months, years (this field tells me how much is the interval of the search 

這是我Log實體:

public class Log implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Integer id; 

    private Timestamp time; 

    private String value; 
    // getters and setters ... 

因此,當用戶告知像1 minute我應該尋找最後一分鐘(或至少60個記錄)。

或者如果1個月,我應該從上個月獲取所有數據。

我想是這樣的:

log.time < CURRENT_TIMESTAMP AND log.time > :param 

但我怎麼可以指定分鐘,小時?我的意思是在我的查詢中如何更具體?

回答

3

如果時間單位是「天」:

Calendar now = Calendar.getInstance(); 
now.add(Calendar.DAY_OF_MONTH, -quantity); 
Date param = now.getTime(); 

讓您查詢的是,並結合param:param請求參數。

對於其他時間間隔,請執行相同操作,但使用適當的日曆字段(HOUR_OF_DAY,MINUTE等)而不是Calendar.DAY_OF_MONTH。

+0

它的工作原理,謝謝! 只需進行一次更正,.add方法爲: now.add(Calendar.MONTH, - 月):首先是當前日期,月份,年份然後是要減去的天數,月份,年數 – 2012-03-09 19:57:16

+0

謝謝。我確定了我的答案。 – 2012-03-09 20:09:07