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サーバーのデフォルト形式に応じて異なる結果が生じる可能性がありDateTime.ToStringます)。

日付で並べ替えるには、別の予測を追加します。

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

DateTimeこれで、ネイティブSQLServerタイプで並べ替える必要があります

于 2012-11-08T05:51:51.447 に答える