Hibernate HQL日期查询问题
如果我期待一个日期对象,比如说2011-03-05 我想用HQL在2011-03年提取所有内容,忽略第/05天 类似于Hibernate HQL日期查询问题,hibernate,hql,Hibernate,Hql,如果我期待一个日期对象,比如说2011-03-05 我想用HQL在2011-03年提取所有内容,忽略第/05天 类似于其中年(somecolumn)=年(datepassedin)和月(somecolumn)=月(datepassedin) 可以在HQL中执行此操作吗 在SQL中似乎很容易做到这一点,但在HQL中却不是这样。HQL有年份和月份,您可以很好地为它提供日期对象。所以,像往常一样使用一个对象,不要花哨或复杂 我尝试了同一查询的两个不同版本,在SQL Server中,类似于您的where
其中年(somecolumn)=年(datepassedin)和月(somecolumn)=月(datepassedin)
可以在HQL中执行此操作吗
在SQL中似乎很容易做到这一点,但在HQL中却不是这样。HQL有年份和月份,您可以很好地为它提供日期对象。所以,像往常一样使用一个对象,不要花哨或复杂 我尝试了同一查询的两个不同版本,在SQL Server中,类似于您的
where year(somecolumn)
的查询速度明显慢于括号中的查询(几乎慢了一个数量级)
您必须创建两个日期,一个在范围的开头,一个在范围的结尾。假设您有一个字符串:
val data = "2011-03-05"
在某处创建一个方便的常量来解析值:
val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM")
然后:
val yearMonthString = data.substring(0, 7)
val fromValue = dateFormat.parse(yearMonthString)
val c: Calendar = Calendar.getInstance(iPutATimeZoneHere)
c.setTime(fromValue)
c.add(Calendar.MONTH, 1)
val toValue = c.getTime
在查询中,您将有其中somecolumn>=:fromValue和somecolumn<:toValue
这段代码是用Scala编写的,但它使用标准Java库