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

Hibernate查询以忽略时间戳的日期获取记录

漆雕升
2023-03-14
问题内容

我在DB(Oracle)表之一中有一个timestamp列tradedate。我使用hibernate作为持久层来获取数据并将其存储到DB。我有一个需要查询日期的数据库的要求。即从用户界面传递一个日期,我需要根据该日期获取过滤后的数据。

如果tradedate列仅包含日期部分,我的查询将返回正确的记录。当在tradedate列中填充时间戳值即(日期+时间)时,就会出现此问题。然后,查询不会返回这些值。

例如:说2010年10月23日在DB 5中有10条记录,其中有时间戳记条目,而5条没有

因此,我有查询只返回5没有时间戳的行。

现在我知道我需要从时间戳中提取日期,然后进行比较,以便获得特定日期的所有记录,但是我不知道如何使用Hibernate和使用HQL

我正在使用的 Java / Hibernate 中的查询如下

字符串hql =“选择从POJO清除为POJO,其中POJO.tradeDate =:date”; 查询查询=
getSession()。createQuery(hql); query.setParameter(“ date”,date);


问题答案:
String hql = "from POJO as POJO where to_date(to_char(POJO.tradeDate, 'DD-MON-YY'), 'DD-MON-YY') = :date"; 
Query query = getSession().createQuery(hql); 
query.setParameter("date", date);

[编辑]

请注意,tradeDate如果遵循上述查询,则不会使用索引(如果有的话)。如果有一些性能问题,您可以这样做,

String hql = "from POJO as POJO where POJO.tradeDate between :date and :ceilDate"; 
Query query = getSession().createQuery(hql); 
// a date having timestamp part, 00:00:00.0, or missing completely
query.setParameter("date", date); 
// a date having timestamp part, 23:59:59.999
query.setParameter("ceilDate", ceilDate);


 类似资料:
  • 问题内容: 我有一张表(在Oracle 9及更高版本中),在这里我需要使用Hibernate查找给定日期的所有条目。这些条目具有时间戳(数据类型为“ date”)。一些条目有一个时间,其他条目只有一个日期。这不能更改,因为这是我无法更改的其他应用程序的输出。在SQL中,我会按照 获取我想要的日期的所有条目。我想知道如何让Hibernate使用HQL做到这一点。我知道我可以在Hibernate中使用

  • 我需要帮助编写JPA查询(或函数)来删除搜索查询中的时间戳。 我可以通过两种方式使用Mysql查询。 选择*from table_name,其中日期(create_date)介于“2019-07-01”和“2019-07-31”之间 选择*from table_name,其中create_date介于“2019-07-01 00:00:00”和“2019-07-31 23:59:59”之间。 我可

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

  • 问题内容: 如何从PostgreSQL的时间戳获取最多只有几分钟而不是几秒钟的日期和时间。我需要日期和时间。 例如: 为此,我需要 从带有时区的时间戳字段中说出,如何使用PostgreSQL select查询获取日期和时间。 请帮我。 问题答案: postgresql有很多可用的日期时间函数: 在这里查看清单 http://www.postgresql.org/docs/9.1/static/fu

  • 问题内容: 我需要将unix时间戳转换为日期对象。 我尝试了这个: 时间戳值为: 日期应该是“ 2019/07/30-22:30:00”(因为我是通过PHP获取的),但我却得到了。 应该怎么做? 问题答案: 对于,请乘以1000,因为java期望的是毫秒: 如果你已经有毫秒,那么 ;

  • 问题内容: 在MySQL客户端/控制台中输出查询结果之前,如何告诉MySQL将时间戳格式设置为可读日期? 问题答案: 像这样使用FROM_UNIXTIME: