c#中sql语法异常

c#中sql语法错误
查询起始时间跟结束时间之间的记录 这样写 老报错

string str = "select * from Record where 1=1 ";
......
if (starttime.Value != "" && endtime.Value != "")
        {
            str += string.Format(" CreatTime > = CONVERT(varchar(20),CreatTime,120) like '" + starttime.Value + "%' 'and CompleteTime < = CONVERT(varchar(20),CompleteTime,120) like'" + endtime.Value + "%''");//这句语法有问题
        }


------解决思路----------------------
str += string.Format(" and CreatTime > = CONVERT(varchar(20),CreatTime,120) like '" + starttime.Value + "%' 'and CompleteTime < = CONVERT(varchar(20),CompleteTime,120) like'" + endtime.Value + "%''");//这句语法有问题
------解决思路----------------------
CreatTime > = CONVERT(varchar(20),CreatTime,120) like

除了一楼错误外,这个也是错误,又是>=又是 like,这明显是错误的SQL
------解决思路----------------------
引用:
Quote: 引用:

以后遇到类似这种问题,断点跟,把拼接出来的SQL语句放数据库里执行一下,不就什么都清楚了?


这句 有个获取输入的数据类型转换为sql中的时间类型 这个不能放到sql查询里吧  
就果断 删除了这块 把其他放进去 没问题 加上这块就出问题了。

你这代码到底是想干啥?又要>=,又要模糊匹配,完全是个自相矛盾的逻辑,而且语法也根本不对

在理清代码错误之前,你最好先理清自己的思路,把逻辑写成伪代码,先说服自己这是对的,再把它翻译成代码
------解决思路----------------------
引用:
正解 逻辑出问题了 楼上贴代码了 帮忙检查下


真要在源代码的基础上小改的话,试试这样:

       if (DropDownList1.SelectedValue != "")
        {
            str += string.Format(" and UserID='" + DropDownList1.SelectedItem.Text + "'");
        }
        //将ID独立开
        if (starttime.Value != "" && endtime.Value == "")
        {
            str += string.Format(" and  CONVERT(varchar(20),CreatTime,120) like '" + starttime.Value + "%'");
        }
        else if (endtime.Value != "" && starttime.Value==“”)
        {
            str += string.Format(" and CONVERT(varchar(20),CompleteTime,120) like'" + endtime.Value + "%'");
        }
        else if (starttime.Value != "" && endtime.Value != "")
        {
            str += string.Format("and  CreatTime >= '" + starttime.Value + "'and CompleteTime <= '" + endtime.Value + "%'");
        }


个人建议有DateTimePicker控件来设定查询时间,而不是TextBox,因为TextBox很难控制输入格式的。