2009-06-30 109 views
2

我想組表值,這HQL查詢工作正常:NHibernate的:HQL:按日期從日期字段刪除部分時間

SELECT af.SubmitedDate, COUNT (af.Id) 
FROM ApplicationForm af 
GROUP BY af.SubmitedDate 

的問題是,現場af.SubmitedDate也包含部分時間,正弦我正在使用SQL Server 2005,所以分組是由日期時間,而不是按日期完成。 當我嘗試做這樣的事情在HQL:

SELECT CONVERT(VARCHAR(10), af.SubmitedDate, 105), COUNT (af.Id) 
FROM ApplicationForm af 
GROUP BY CONVERT(VARCHAR(10), af.SubmitedDate, 105) 

...我收到此錯誤:

NHibernate.QueryException was unhandled by user code 
Message="undefined alias or unknown mapping: CONVERT 

該查詢是正確的TSQL,我甚至讀的地方可以使用CONVERT , 但我在Java的Hibernate論壇上讀到它。

那麼,我怎樣才能從這個日期刪除時間部分,以便分組工作正確?

在此先感謝, Dejan。

回答

1

我創建的SQL Server 2005中一個標量值函數,它封裝 這個命令:

CONVERT(VARCHAR(10), af.SubmitedDate, 105) 

和XML定義中,我把這個:

<property name='SubmitedDateWithoutTime' formula='dbo.RemoveTimeFromDateTime(SubmitedDate)'/> 

所以,我的HQL查詢看像這樣的結尾:

SELECT af.SubmitedDateWithoutTime, COUNT (af.Id) 
FROM ApplicationForm af 
GROUP BY af.SubmitedDateWithoutTime 

,這完美的作品。

3

你可以使用內置的HQL功能之一見mssql2000dialect

你的情況,日期似乎是一個

+0

感謝您的回答。我正在使用MS SQL 2005方言,但是你能寫一個例子,我怎樣才能使用這個,因爲我是這個新手。謝謝。 – Dejan 2009-07-01 08:55:04