2012-10-29 133 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