java - 从 HQL 中的时间戳提取日期以在 where 子句中进行比较

标签 java hibernate jpa hql

我想使用 HQL 从时间戳字段中提取(年、月、日),以便在 where 子句中进行比较。

示例:

Query hibernateQuery = session.createQuery("select sum(t.amount) from Transaction t " + 
  "where extract_date(t.timestampField) = :date");

hibernateQuery.setParameter("date", LocalDate.of(2018, 10, 11));

System.out.println( hibernateQuery.getSingleResult() );

所以我正在寻找一个类似于我在上面的示例中使用的伪函数 extract_date(t.timestampField) 的函数。

最佳答案

这应该可以正常工作

Query hibernateQuery = session.createQuery("select sum(t.amount) from Transaction t " + 
      "where DATE(t.timestampField) = :date");

hibernateQuery.setParameter("date", new java.sql.Date.valueOf("2018-10-11"));

注意: DATE(...) 函数返回的数据类型是 java.sql.Date 因此,如果您有java.time.LocalDate 它可以很容易地转换为 java.sql.Date 如下:

LocalDate localDate = LocalDate.of(2018, 10, 11);
java.sql.Date sqlDate = java.sql.Date.valueOf(localDate);

在下面的问答中对此进行了讨论。

https://stackoverflow.com/a/29168526/7972796

关于java - 从 HQL 中的时间戳提取日期以在 where 子句中进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59608052/

相关文章:

java - key 适配器不工作

java - 将Excel数据转换为MySql表

java - Spring 通过 XML Beans 定义注册多个 Hibernate 数据源

java - 我使用什么版本的 JPA?

jpa - 如何在 EntityManager (JPA) 中查找所有托管附加对象

java - Android:Firebase 实时数据库有连接池吗?

java - 如何使用 Jackson 将 JSON 的一部分作为纯文本获取

Postgresql 星期几的 Java 常量

java - 无法访问 JSP 中列表中对象数组中的每个元素

java - 无法创建未找到的唯一键约束