mysql - Nhibernate 选择日期部分

标签 mysql nhibernate sql-server-ce datepart

我需要在不同的数据库上下文中使用这个 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/

相关文章:

sql - SQL到NHibernate标准查询转换

.net - ObjectContext.SaveChanges() 因 SQL CE 失败

c# - 如何使用从数据库派生的相对文件路径将 WPF 图像元素绑定(bind)到本地硬盘驱动器上的 PNG?

php - 将多个静态数据存储到数据库中

sql - 如何在 MySQL 中按 SUM() 排序?

NHibernate 遗留数据库多对一

deployment - 使用我的 Windows Mobile 应用程序部署 SQL Server CE

php - 识别 PHP/MySQL 应用程序 (Drupal) 中性能瓶颈的最佳实践

php - 我的上传脚本只能在我的电脑上运行

nhibernate - QueryOver 或与子查询