2014-03-24 67 views
1

我需要做下面的MSSQLServer查詢它獲取DATEPARTHQL查詢來獲取一年

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

我得到與functionDATEPART strucked在當前weeek所做的更改(WK,ACTION_TIME)=數週(周,getdate())在HQL中是否有任何等價物。

也就是有沒有辦法從2014年3月24日20獲得日期(2014年3月24日)部分爲:56:在HQL 26.297

更新:

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) 

它給按行動時間記錄組(存儲在分貝作爲時間戳)

+0

什麼是你的目標是什麼?我認爲沒有簡單的日期函數,但取決於你想要做什麼,有不同的選擇。 – Julien

+0

@ julien請參閱更新 – user2779544

回答

0

我不認爲在HQL中有一個week()函數。你不能混用HQL和SQL。

因此,您可以使用SQL查詢或切換到標準的查詢,並實現自己的SQLCriterion產生你想要的確切SQL片段(見的javadoc here

更新:我錯過了另一種選擇是提取物( )功能。 首先,你必須配置你的Hibernate使用SqlServerDialect(或它的一個子類)。 然後提取功能將被轉換爲SQL DATEPART及以下條款應做的伎倆:

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

任何建議從2014年3月24日20:56:26.297獲取日期部分 – user2779544