有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

sql从Java向hql查询传递日期

我试图找出如何获得比当前日期短一年的日期,并将其作为参数传递给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。(ex:2013年6月21日)


共 (2) 个答案

  1. # 1 楼答案

    我认为这会奏效:

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

    如果c.dateOfContact的类型是java。util。日期或java。sql。比卡尔约会。getTime()必须工作

  2. # 2 楼答案

    Date d =  cal.getTime();
    Query query = em.createQuery(QUERYSTRING)setParameter("cutOffDate", d);
    

    上述方法应该有效,不要将日期格式化为字符串,因为那样你将比较StringDate