DataGridView以错误的顺序对日期进行排序

时间:2015-02-24 09:20:33

标签: sql winforms date datagridview

我有一个DataGridView和一个搜索框,我可以在其中搜索特定列中的不同日期。现在,由于日期格式化为字符串,他会给我错误的顺序:

我输入20并获得:

2014年10月20日,
2014年9月22日,
2014年11月24日

等等。我在这里读到了另一个关于这个问题的帖子,但解决方案并没有帮助我。我的SQL语句如下所示:

 DataTable datTable = new DataTable();

 sqlCmd = new SqlCommand("SELECT ["+form1.timeBox.Text+ "] FROM [" + form1.getTableName() + "] WHERE convert(varchar(10),[" + form1.getTimeCol() + "],104) >= '" + form1.getFromDate().Trim() + "' ORDER BY convert(varchar(10),[" + form1.getTimeCol() + "],104) ASC", connection);

   sqlDatAdapter = new SqlDataAdapter(sqlCmd.CommandText, connection);

            sqlDatAdapter.Fill(datTable);

            form1.setDataGrid = datTable;

form1.getFromDate()

是从文本框中搜索输入的字符串以搜索的函数。我试图转换并转换为datetime等,但它仍然以错误的顺序显示。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

而不是使用'> ='使用'喜欢'运算符'%'你的" form1.getFromDate()结束时的字符.Trim()",它将为你提供所需的结果。

使用'喜欢'您的查询将如下所示:

sqlCmd = new SqlCommand("SELECT ["+form1.timeBox.Text+ "] FROM [" + form1.getTableName() + "] WHERE convert(varchar(10),[" + form1.getTimeCol() + "],104) Like '" + form1.getFromDate().Trim() + "%' ORDER BY convert(varchar(10),[" + form1.getTimeCol() + "],104) ASC", connection);

答案 1 :(得分:1)

您按格式化列排序;没有必要这样做,这是造成问题的部分。

我反对字符串连接来构建sql命令,但你的代码应该按如下方式重写:

sqlCmd = new SqlCommand("SELECT ["+form1.timeBox.Text+ "] FROM [" + form1.getTableName() + "] WHERE convert(varchar(10),[" + form1.getTimeCol() + "],104) >= '" + form1.getFromDate().Trim() + "' ORDER BY " + form1.getTimeCol() + " ASC", connection);