private DataTable UsedInfo()
{
DataSet Ds=new DataSet();
SqlDataAdapter Da=new SqlDataAdapter();
SqlCommand Comm=new SqlCommand("select * from MYcard WHERE (CONVERT(char(7), used_time, 120) >= '"+begin.Text.Trim()+"') AND (CONVERT(char(7), used_time,120) <= '"+end.Text.Trim()+"')",Conn);
Conn.Open();
Da.SelectCommand=Comm;
Da.Fill(Ds,"User");
Conn.Close();
return Ds.Tables["User"];

}
private void DBind()
{
DataTable Dt=UsedInfo();
Label1.Text=Dt.Rows.Count.ToString();
Label2.Visible=true;
DataGrid1.DataSource=Dt;
DataGrid1.DataBind();
}
----------------------------------------------------------------------------
现在的问题是我输入2006-1到2006-12月查询无数据
但是我输入2006-1到2007-6能查询到目前为06年和07年的所有数据!!(也就是06年肯定是有数据的)

解决方案 »

  1.   

    输入2006-01范围查询datediff没有用
      

  2.   


    SqlCommand Comm=new SqlCommand("select * from MYcard WHERE  used_time>='"+begin.Text+" 00:00:00' and used_time<='"+end.Text+" 00:00:00'",Conn);

    结果一样没用的!!
    很纳闷
      

  3.   

    我认为这种情况下,最好的方式是跟踪下代码,把跟踪出来的SQL语句放到查询分析器里面去查询.
    这样比较清楚,也很容易发现问题.
    同时看一下MYcard表中used_time字段是怎么在数据库中表示的.
      

  4.   

    你把used_time字段的值拿几个出来看看.
      

  5.   

    把你认为该取到值,但没取到值的SQL语句发出来。不要让我们在这里帮你猜。(另:不要比较字符串,直接比较时间)
      

  6.   

    楼上的
    我已经 设置断点看过了
    SQL语句中都取到值了
    比如我查询查询2006-1-1 ------>2006-5-1
    如果用:SqlCommand Comm=new SqlCommand("select * from MYcard WHERE  used_time>='"+begin.Text+" 0:00:00' and used_time<='"+end.Text+" 0:00:00'",Conn);
    结果把2006-5-10的也查出来了
    我晕死
      

  7.   

    注意输入格式2006-1-1 ------>2006-5-1应为2006-01-01 ------>2006-05-01
      

  8.   

    此外,你used_time字段是什么类型的?
      

  9.   

    唉......你能不能听我们的,把最终执行的SQL语句输出来?
      

  10.   


    数据类型是varchar的
      

  11.   

    varchar的怎么搞
    谁指点下
    真的要吐血了我