如何在JPA中查询时间戳间隔?

时间:2012-03-09 17:29:19

标签: mysql hibernate jpa hql jpql

我有一个'Log'实体,其中包含有关温度的信息。 我正在尝试构建一个仅包含两个字段的报告:

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

但我如何指定分钟,小时?我的意思是如何在我的查询中更具体?

1 个答案:

答案 0 :(得分: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。