我需要在不同的数据库上下文中使用这个 SQL 字符串,我知道它在 MSSQLCE4 中工作,但在 MySql 中不起作用
sql = session.CreateSQLQuery(
"SELECT DISTINCT DATEPART(yyyy," + DataRicezioneFile + ") AS Data" +
" FROM " + Ricevuta +
" ORDER BY Data DESC"
);
所以我在 Nhibernate 中使用 QueryOver 编写了相同的内容
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 中工作,我想是因为使用 YEAR(DateTime) 而不是 DATEPART(yyyy,DateTime)
我不知道如何让函数独立于数据库引擎工作。任何想法?