java - 从 Java 将日期传递给 hql 查询

标签 java sql hibernate date

我正在尝试找出如何获取比当前日期小一年的日期并将其作为参数传递给 HQL。

我尝试使用日历。但我在将其转换为 Oracle 所需的正确日期格式时迷失了方向。

Calendar cal = Calendar.getInstance();  
cal.setTime(new Date());  
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.YEAR, -1);
String dateLimit = cal.getTime().toString();
Date dateFormatter = new SimpleDateFormat("dd-MMM-yyyy").parse(dateLimit); // This one shows I need to either wrap it up in try catch or specify in throws.

//Date cutOffDate = dateFormatter.parse(dateLimit); //tried this. no avail

queryBuilder.append(" and c.dateOfContact >= :cutOffDate ");
parameters.put("cutOffDate", dateFormatter);

或者,Hibernate 是否有用于日期操作的内置函数?我想要的只是将一个日期传递给查询,该日期比当前日期小一年。

Oracle 日期格式为 dd-MMM-yyyy。 (例如:2013 年 6 月 21 日)

最佳答案

我认为这会起作用:

parameters.put("cutOffDate", cal.getTime());

如果 c.dateOfContact 的类型是 java.util.Date 或 java.sql.Date,则 cal.getTime() 必须起作用。

关于java - 从 Java 将日期传递给 hql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17241023/

相关文章:

java - 在 SQL 语句中使用变量而不是 TableName

java - java中的日期转换问题

java - 支持 hibernate 的 IntelliJ IDEA

hibernate - 为什么不使用 Spring 的 OpenEntityManagerInViewFilter

java - 具有多个参数的 Java 8 的 Function.Function

java - 如何通过Jsoup获取 "select"html元素?

java - IntelliJ 不会编译从文档复制的基本 JavaFX 程序

Java AES解密: random chars & message at the end

mysql - 在 SELECT 中重用别名

sql - 为我的用户获取 "rank"的徽章 - 查询很慢 - 可能加速吗?