当前位置: 首页 > 面试题库 >

仅将日期的日期部分与Hibernate中的时间戳进行比较

朱锦
2023-03-14
问题内容

我在数据库中有时间戳,在应用程序中我有日期。我喜欢编写hibernate标准,以便hibernate可以提取所有与日期匹配的条目,而不是时间部分。例如

在数据库时间戳记中

2011-12-01 15:14:14

在应用程序中,我确实具有java.util.Date,默认情况下具有时间部分。

我的问题是,当我使用以下代码从数据库中搜索条目时,我什么也没得到

    DetachedCriteria criteria = DetachedCriteria.forClass(MyClass.class);
    criteria.add(Restrictions.like(TIMESTAMP_FIELD, javaUtilDate));
    List entries =this.getHibernateTemplate().findByCriteria(criteria);

提前致谢


问题答案:

如果您正在寻找 按日期范围过滤常规用法 (例如,从今天到明天)。我用这种方式:

YourService.java

Date fromTimestamp = new Date();
Date toTimestamp = new Date();
Date fromDate = DateHelper.getDateWithoutTime(fromTimestamp);
Date toDate = DateHelper.getDateWithoutTime(DateHelper.getTomorrowDate(toTimestamp));

YourDAO.java

criteria.add(Restrictions.ge(TIMESTAMP_FIELD, fromDate));
criteria.add(Restrictions.le(TIMESTAMP_FIELD, toDate));

DateHelper.java

public static Date getDateWithoutTime(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTime();
}

public static Date getTomorrowDate(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.DATE, 1);
    return cal.getTime();
}

当然,每个代码中始终都有重构的空间。



 类似资料:
  • 问题内容: 在SQL语句中,如何比较保存为TIMESTAMP的日期和YYYY-MM-DD格式的日期? 例如: 我希望此查询返回指定日期中所有带有时间戳的行,但它仅返回具有午夜时间戳的行。 谢谢 问题答案: 您可以使用该函数提取时间戳记的日期部分: 但是,如果您在timestamp列上有索引,则这样做会更快,因为它可以利用索引:

  • 我有个约会‘2019-05-08t 22:15:00-0400’。我想将这个日期与当前的日期和时间进行比较。如果上述日期和时间小于当前日期和时间,那么我必须做些什么。 我的代码是:- 但它返回 false 。

  • 问题内容: 以下代码有什么问题? 也许只比较日期而不是时间会更简单。我也不确定如何执行此操作,因此我进行了搜索,但找不到确切的问题。 顺便说一句,当我在警报中显示两个日期时,它们显示为完全相同。 我的代码: 有没有比较日期而不包含时间的简单方法? 问题答案: 我仍在学习JavaScript,而我发现唯一可以比较两个没有时间 的日期的方法是使用Date对象的方法,并将小时,分钟,秒和毫秒设置为零。然

  • 问题内容: 我有一个函数,将时间戳记值(YYYY-MM-DD HH:MM:SS)放入table的列中。 我想做的是比较日期的部分(YYYY-MM-DD)是否等于今天(CURDATE()),而忽略小时,分钟和秒(HH:MM:SS)。 我该怎么做? 问题答案: 始终尽可能避免在现场进行计算:例如 将为该表中的所有行计算DATE(),因此您实际上在这里谈论的是浪费的周期

  • 问题内容: 我必须比较hibernatehql查询中的两个日期。我在我的Java bean中使用java.util.Date,并在MySQL数据库中将时间戳用作数据类型。 上面的查询将时间与日期进行比较。我应该怎么做才能在没有时间的情况下比较上述查询中的日期。 问题答案: 有关可用的日期功能,请参见Hibernate文档。 http://docs.jboss.org/hibernate/orm/3

  • 问题内容: 这是我要传递时间戳的Under函数,我只需要从时间戳返回的日期,而不是小时和秒。通过以下代码,我得到了- 这是我得到的输出。 但是我只需要这样的日期 有什么建议? 问题答案: 改用SimpleDateFormat: 更新 :Java 8解决方案: