gpt4 book ai didi

c# - 通过 nHibernate Criterion 使用 SQL CONVERT 函数

转载 作者:行者123 更新时间:2023-11-30 14:56:29 24 4
gpt4 key购买 nike

我有一个 sql View ,其中每一列的数据类型都是 string,用于 jquery 数据表插件。

其中一列包含英国格式日期 dd/mm/yyyy。

此列需要保留为字符串以与插件的击键过滤一起使用,但是为了排序需要将其视为日期。

我正在使用 nhibernate 标准来创建 sql 查询,我想生成以下 order by 子句,因为这样可以正确地对日期进行排序

order by CONVERT (datetime, DateOfBirth, 103)

但是在 Nhibernate.Criterion.Projections 中没有 Convert 方法。有 Cast,但由于它是英国日期格式,我收到以下错误:

The conversion of a varchar data type to a datetime data type 
resulted in an out-of-range value

我也尝试过以下方法:

 criteria.AddOrder(
Order.Desc(
Projections.SqlFunction(
"CONVERT",
NHibernateUtil.DateTime,
new IProjection[]
{
Projections.Property(propNames[orderByColumn]),
Projections.Property("104")
}
)
)
);

但是我收到以下错误信息:

NHibernate.HibernateException: Current dialect 
NHibernate.Dialect.MsSql2008Dialect doesn't support the function: CONVERT

使用Nhibernate.Criterion时可以使用SQL转换函数吗?

最佳答案

如果设置104不是必需的,我们可以得到一个快速的解决方案:使用CAST而不是CONVERT。此 SQL 函数内置于 NHibernate 方言中:

Projections.Cast(NHibernateUtil.DateTime
,Projections.Property(propNames[orderByColumn]))

如果设置 104 很重要,我们可以创建我们自己的 Dialect,注册 CONVERT 函数,并从那时起……永远使用它

这里 Andrew Whitaker 很好地展示了如何

关于c# - 通过 nHibernate Criterion 使用 SQL CONVERT 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22804798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com