【发布时间】:2026-01-13 04:00:02
【问题描述】:
我需要在不同的数据库上下文中使用这个 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)
我不知道如何让函数独立于数据库引擎工作。有什么想法吗?
【问题讨论】:
标签: mysql nhibernate sql-server-ce datepart