string sql = "select * from serachTime where 1=1";
        if(!string.IsNullOrEmpty(this.TextBox1.Text))
        {
        sql+=" and timeStart >= @s";
        }
        if (!string.IsNullOrEmpty(this.TextBox2.Text))
        {
            sql += " and timeEnd <= @e";
        }        SqlDataAdapter da = new SqlDataAdapter(sql, conn);
        if(!string.IsNullOrEmpty(this.TextBox1.Text))
        {
            da.SelectCommand.Parameters.AddWithValue("@s", this.TextBox1.Text);
        }
        if (!string.IsNullOrEmpty(this.TextBox2.Text))
        {
            da.SelectCommand.Parameters.AddWithValue("@e", this.TextBox2.Text);
        }        DataSet ds = new DataSet();
        da.Fill(ds, "times");
        this.GridView1.DataSource = ds.Tables["times"];
        this.GridView1.DataBind();
编译报错:从字符串向 datetime 转换时失败  - -!
我想实现的功能是 txt1中输入2000可以查到2000年以后的所有数据,如果再txt2中输入2005则查到2000至2005的数据

解决方案 »

  1.   


            sql+=" and ltrim(year(timeStart)) >= @s"; 
            } 
            if (!string.IsNullOrEmpty(this.TextBox2.Text)) 
            { 
                sql += " and ltrim(year(timeEnd)) <= @e"; 
            } 
      

  2.   

    楼主还要验证一下Textbox1.Text和TextBox2.Text输入是否是日期的合法性  if(!string.IsNullOrEmpty(this.TextBox1.Text)) 
            { 
            sql+=" and timeStart >= cast(@s as datetime)"; 
            } 
            if (!string.IsNullOrEmpty(this.TextBox2.Text)) 
            { 
                sql += " and timeEnd <= cast(@e as datetime)"; 
            } 
      

  3.   

    这是典型的.NET问题。if(!string.IsNullOrEmpty(this.TextBox1.Text)) 
            { 
            sql+=" and timeStart >= cast(@s as datetime)"; 
            } 
            if (!string.IsNullOrEmpty(this.TextBox2.Text)) 
            { 
                sql += " and timeEnd <= cast(@e as datetime)"; 
            } 
      

  4.   

    先把this.TextBox1.Text转成DateTime类型
    da.SelectCommand.Parameters.AddWithValue("@s", Convert.ToDateTime(this.TextBox1.Text));