1

我正在尝试使用日期列对数据进行排序,但该列排序为字符串而不是日期。如何解决这个问题呢?

代码:

var projection = Projections.SqlFunction("lower", NHibernateUtil.String,Projections.Property("datecolumn1"));

if(order="desc")queryOver = queryOver.OrderBy(projection).Desc;
else queryOver = queryOver.OrderBy(projection).Asc;

结果:(按升序排序)

8/7/2012 5:34 AM
11/7/2012 7:21 AM
11/7/2012 7:21 AM
11/7/2012 7:21 AM
11/7/2012 7:21 AM
8/27/2012 9:35 AM
4

1 回答 1

4

上面的片段显示有一个string投影。所以结果被排序为一组字符串值。(这可能导致依赖于 sql server 默认DateTime.ToString格式的不同结果)。

要按日期对其进行排序,请添加不同的投影:

var projection = Projections.Property("datecolumn1"));

现在它应该按原生 SQL ServerDateTime类型排序

于 2012-11-08T05:51:51.447 回答