2009-06-30 110 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