本帖最后由 xintingandzhouyang 于 2012-07-11 22:39:43 编辑

解决方案 »

  1.   

    我觉得也是时间可能没有转换好,但是我现在真的不知道该怎么改。照着你的方法改了之后,还是报‘where附近有语法错误’。这是我打印的SQL语句结果。
    SELECT  COUNT(*) FROM I_异常情况_异常情况提报 WHERE InstanceCreatedTime >='07/01/2012'  and InstanceCreatedTime<='07/08/2012'
    完全可以执行,不知道怎么回事,放进存储过程中就出错。
      

  2.   

    哈,知道原因了,你的参数赋值这部分,没有给参数定义它们的字段类型啊,比如
    SqlParameter[] para = new SqlParameter[]
            {
                new SqlParameter("@endTime",SqlDbType.DateTime),
                new SqlParameter("@startTime",SqlDbType.DateTime),
                new SqlParameter("@price",SqlDbType.Varchar),
                new SqlParameter("@brach",SqlDbType.Varchar),
                new SqlParameter("@state",SqlDbType.Int)
            };
    para[0] = endTime;
    para[1] = starttime;
    ....
      

  3.   

    SqlParameter[] para = new SqlParameter[]
      {
      new SqlParameter("endTime",SqlDbType.DateTime),
      new SqlParameter("startTime",SqlDbType.DateTime),
      new SqlParameter("price",SqlDbType.Varchar),
      new SqlParameter("brach",SqlDbType.Varchar),
      new SqlParameter("state",SqlDbType.Int)
      };
    para[0] = endTime;
    para[1] = starttime;
    ....
      

  4.   

    你的“WHERE '+CONVERT(varchar(30),'InstanceCreatedTime',101)+' >='''+CONVERT(varchar(30),@startTime,101)”象是有问题。字段名不要处理,直接用'InstanceCreatedTime'。
      

  5.   

    改过来了,还是报'where附近有语法错误'
      

  6.   

    楼主试下: InstanceCreatedTime>=CONVERT(varchar(10), @startTime,120) and InstanceCreatedTime<CONVERT(varchar(10), @endTime,120)
      

  7.   

    先print @sqlstrwhere后面两个日期直接比较,是不是少引号了