我需要在不同的数据库上下文中使用这个 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 中无效,我想是因为使用了 YEAR(DateTime) 而不是 DATEPART(yyyy,DateTime)
我不知道如何让该函数独立于数据库引擎工作。有什么想法吗?
最佳答案
你能尝试 Nhibernate Linq 吗?
因为我已经使用 Nhibernate Linq 完成了这些字符串操作和日期操作
关于mysql - Nhibernate 选择日期部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17295029/