基于TimeStamp列上的日期的HQL查询?

时间:2013-07-24 05:56:54

标签: java sql hql

我有一张包含TimeStamp列的表格。我想在该表上执行一个查询,给出的条件是只检查该列上的Date而不是时间。 我怎么能在HQL中做到这一点?

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

6 个答案:

答案 0 :(得分:3)

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

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

from Table where to_char(TimeStamp,'YYYY/MM/DD') = '2013/07/23'

答案 1 :(得分:0)

在MySQL中,HQL可以是:

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

其中日期为'7/23/2013'

答案 2 :(得分:0)

另一种方法是使用DAY(...)MONTH(...)YEAR(...) expressions

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

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

答案 3 :(得分:0)

表格中的Wilts C. to_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'

答案 4 :(得分:0)

Java 8

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

其中:
日期是java.sql.Date
fullDate是java.time.LocalDate
尝试比较的字段用@Temporal

声明

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

答案 5 :(得分:0)

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

尝试本教程:Document