HQl查询获取一年中的一周

时间:2014-03-24 10:48:52

标签: hibernate hql date-formatting week-number

我需要进行以下MSSQLServer查询,该查询获取当前weeek中所做的更改次数

select count(1) from Audit_tbl where DATEPART( wk, action_time)=DATEPART( wk,getdate())

我遇到函数DATEPART(wk,action_time)= DATEPART(wk,getdate())在HQL中有任何等价物。

也有办法在2014-03-24 20:56:26.297的HQL中获取日期(2014-03-24)部分

更新

select DATEADD(day,datediff(day,0,action_time),0) AS ActionDate,
count(1) as total 
from Server_tbl
where YEAR(action_time) = YEAR(getdate())
group by DATEADD(day,datediff(day,0,action_time),0)

它按行动时间给出记录组(存储在db中作为时间戳)

1 个答案:

答案 0 :(得分:0)

我不认为HQL中有一个week()函数。而且你不能混用HQL和SQL。

因此,您可以使用SQL查询或切换到Criteria查询并实现自己的SQLCriterion以生成所需的确切SQL片段(请参阅javadoc here

更新:我错过的另一个选项是extract()函数。 首先,您必须将Hibernate配置为使用SqlServerDialect(或其子类之一)。 然后,提取函数将在SQL中翻译为DATEPART,以下子句应该可以解决这个问题:

... where extract(wk from actionTimeProperty) = extract(wk from current_date())