2012-10-29 95 views
-1

我是hibernate和hql的新手。任何人都可以帮助我什么是下面的查询hql等效?SQL到NHibernate HQL

SELECT CONVERT(DATETIME, 
LEFT(CAST([run_date] AS VARCHAR),4) + '-' + 
SUBSTRING(CAST([run_date] AS VARCHAR),5,2) + '-' + 
SUBSTRING(CAST([run_date] AS VARCHAR),7,2) + ' ' + 
LEFT(RIGHT('000000' + CAST([run_time] AS VARCHAR),6),2) + ':' + 
SUBSTRING(RIGHT('000000' + CAST([run_time] AS VARCHAR),6),3,2) + ':' + 
SUBSTRING(RIGHT('000000' + CAST([run_time] AS VARCHAR),6),5,2) 
,121) 
FROM sysjobhistory 

谢谢

回答

1

我不会创建一个HQL查询。相反,我只是使用简单的hql读取​​并使用ResultTransfomer和Date Fromater来获得最终结果。

+0

感谢您的回复。实际上,这是主要查询中的子查询。 – elamaran

+0

查询将会像与STARTTIME IN(上述查询> – elamaran

+0

那么你仍然必须使它两个查询的可能性。 – bernhardrusch

0

你真的在这里折磨NHibernate。当然,sysobjhistory有一些奇怪的模式,run_date和​​是int s,但是你所做的不是NHibernate的方式。

我会这么做的方式是编写自定义IUserType以在本机DateTime实例和这两列之间进行转换。

+0

感谢您response.I现在用的是上面的查询作为主查询的子查询。 – elamaran

0

由于sysjobhistory特定于特定的RDBMS,因此尝试将其定义为DB本身中的存储过程或用户函数,然后从HQL中简单调用该函数可能是个好主意。

+0

谢谢你好你会尝试你的选择,目前我使用ADO.Net直接执行SQL查询。 – elamaran