3

我有一张桌子,TimeStamp里面有一列。我想对该表执行一个查询,给出只检查该列上的日期而不是时间的条件。我怎样才能在 HQL 中做到这一点?

假设我的列具有价值07/23/2013 04:40:59 PM,我想选择查询以仅检查7/23/2013并忽略时间。

4

6 回答 6

3

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

IE

table.timestamp >= 07/23/2013 AND table.timestamp < 07/24/2013

或者

from Table where to_char(TimeStamp,'YYYY/MM/DD') = '2013/07/23'
于 2013-07-24T06:03:16.510 回答
0

另一种方法是使用DAY(...), MONTH(...),YEAR(...) 表达式

WHERE MONTH (timestampcol) = 7 
  AND DAY (timestampcol) = 23 
  AND YEAR (timestampcol) = 2013

在 Postgres 中,这被映射到extract(field from timestamp)函数

于 2014-01-17T14:34:06.843 回答
0

如果您将 oracle 用作 DBMS,则可以在 HQL 中使用trunc(timestamp)来丢弃时间戳的小时部分。

试试这个教程:文档

于 2020-01-21T11:25:54.803 回答
0

爪哇 8

.setParameter("dateParameter", Date.valueOf(fullDate), TemporalType.TIMESTAMP)

在哪里:

Date 是java.sql.Date,fullDate 是 java.time.LocalDate,并且试图比较的字段是用 声明的@Temporal

https://thoughts-on-java.org/persist-localdate-localdatetime-jpa/

于 2019-03-02T11:50:24.043 回答
0

Wilts C. from Tableto_char(TimeStamp,'YYYY/MM/DD') = '2013/07/23'正确答案在哪里。其他答案与 HQL 无关,也没有解决如何格式化日期输入以在 HQL 中进行比较。

我没有足够的声望来投票。HQL 将接受日期字符串输入(注意 SQL 注入)并将其与您的列日期字符串格式进行比较。另一个例子:to_char(surveyDate,'YYYY/MM/DD') between '2000/09/23' and '2015/07/23'

于 2015-09-24T15:17:20.520 回答
-2

在 MySQL HQL 中可以是这样的:

where DATE_FORMAT(date_column,'MM/dd/yyyy') = :date

其中日期是“2013 年 7 月 23 日”

于 2013-07-24T06:03:14.930 回答