【问题标题】:Hibernate HQL query for finding entries older than 3 hours用于查找超过 3 小时的条目的 Hibernate HQL 查询
【发布时间】:2011-03-08 21:10:44
【问题描述】:

我应该如何设置 HQL 条件,从 now 中选择所有 date 属性早于 3 小时 的对象。

【问题讨论】:

    标签: java hibernate hql


    【解决方案1】:

    这应该可行。

    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.HOUR_OF_DAY, 3);
    
    Query q = session.createQuery("from table where date < :date");
    q.setCalendarDate("date", cal);
    q.list();
    

    【讨论】:

    • 你不应该从现在减去 3 小时并寻找date &lt; :date吗?
    • 我遇到了类似的问题,在我的情况下,数据库服务器时间和应用服务器时间不同,所以这个解决方案在我用应用程序服务器的时间设置时间戳字段之前是无效的。
    • 使用应用程序节点的时间来获取数据库节点的时间差。这不是一个好的解决方案。如果需要,使用 now() db 方法(基于 db 引擎)和带间隔的 date_sbu 会更合适。 w3schools.com/sql/func_mysql_date_sub.asp
    猜你喜欢
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    相关资源
    最近更新 更多