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

使用HQL查询日期,而忽略Oracle上的时间

陈夜洛
2023-03-14
问题内容

我有一张表(在Oracle 9及更高版本中),在这里我需要使用Hibernate查找给定日期的所有条目。这些条目具有时间戳(数据类型为“
date”)。一些条目有一个时间,其他条目只有一个日期。这不能更改,因为这是我无法更改的其他应用程序的输出。在SQL中,我会按照

SELECT * FROM table WHERE trim(table.date) = to_date('11.06.2009')

获取我想要的日期的所有条目。我想知道如何让Hibernate使用HQL做到这一点。我知道我可以在Hibernate中使用SQL查询,但这似乎不太干净。有没有办法做到这一点?如果可能的话,这种方法也应该适用于非Oracle数据库,其中timestamp是数据类型。


问题答案:

您可以在HQL中放入两个约束,一个约束指定大于或等于您搜索日期的开始,另一个约束指定小于第二天。

table.date >=11.06.2009 AND table.date < 11.07.2009

HQL(以及SQL)还允许:

table.date between 11.06.2009 AND 11.07.2009

在保持心中between永远包容性,这意味着它都>=<=分别。此处的
更多详细信息between:http : //www.coding-
dude.com/wp/java/hibernate-java/hibernate-hql-between-
expression/



 类似资料:
  • 我需要帮助编写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”之间。 我可

  • 问题内容: 我在DB(Oracle)表之一中有一个timestamp列tradedate。我使用hibernate作为持久层来获取数据并将其存储到DB。我有一个需要查询日期的数据库的要求。即从用户界面传递一个日期,我需要根据该日期获取过滤后的数据。 如果tradedate列仅包含日期部分,我的查询将返回正确的记录。当在tradedate列中填充时间戳值即(日期+时间)时,就会出现此问题。然后,查询

  • 问题内容: 我正在尝试使用Hibernate 3和Oracle 10编写此查询。 它正在这样创建SQL- 当显然有完美的括号时,我会收到所有这些古怪的错误,例如“缺少正确的括号”。 甲骨文为何为此大吃一惊?有没有更好的方法来编写我的HQL查询? 问题答案: 不是吗? Hibernate会将其翻译为适当的方言。 我没有找到真正的“ Hibernate将其翻译成该文档”参考文档,但该表达式通常可以在H

  • 问题内容: 我正在使用此代码来计算忽略周末的两个日期之间的差异: 我还有一个名为table1的表,其中存在“日期”列(其类型为“ DATE”),其中记录了假期的所有日期。 示例表1: 我正在尝试使我的代码检查该表,并且如果一个日期在上面的两个日期之间,则它在输出中为-1天。 问题答案: 如果将其划分为以下任务,则应该很容易: 生成所有使用两个给定日期之间的日期 行生成 方法如图所示。 忽略周末的日

  • 我对Oracle SQL中的以下查询有疑问: 当我运行它时,结果如下所示:2015年11月10日。根据我在Oracle文档中读到的内容,YYYY应该转换为4位数的年份,但它转换为2位数的年份。为什么会这样?

  • 问题内容: 我正在尝试找出如何根据我存储在表中的数据来计算各种应用程序的实际停机时间。 目前,我只是在计算DowntimeMinutes中显示的DowntimeStart和DowntimeEnd之间的差异。 问题是,如果由于单独的组件故障而导致时间跨度,则应计入总数,而忽略重叠。 我的期望显示在“期望”列中。 关于如何将查询组合在一起以实现此目标的任何想法? 我看了看并研究了这些选项,但它们没有达