この SQL 文字列を別のデータベース コンテキストで使用する必要があります。MSSQLCE4 では機能することはわかっていますが、MySql では機能しません。
sql = session.CreateSQLQuery(
"SELECT DISTINCT DATEPART(yyyy," + DataRicezioneFile + ") AS Data" +
" FROM " + Ricevuta +
" ORDER BY Data DESC"
);
だから私はQueryOverを使ってNhibernateで同じことを書いた
list = session.QueryOver<Ricevuta>()
.Select(
Projections.Distinct(Projections.SqlFunction( "year", NHibernateUtil.Int32,
Projections.Property<Ricevuta>( r => r.DataRicezioneFile )
)))
.OrderBy(r=>r.DataRicezioneFile).Desc
.List<int>().ToList();
これは MySql では機能しますが、MSSQLCE4 では機能しません。おそらく、DATEPART(yyyy,DateTime) の代わりに YEAR(DateTime) を使用しているためです。
関数をデータベース エンジンから独立して動作させる方法がわかりません。何か案が?