我在一个表中设置了一列名为“rq”,顾名思义就是用来存储日期的,数据类型是char(注意,这里数据类型不是datetime,但我又不能把它改为datetime)
那么,现在我需要在存储过程中设置两个参数:
@StartDate datetime,
@EndDate datetime,
以查询在这两个日期参数的中间的rq
set @sql=@sql+' where rq>='''+convert(nvarchar,@StartDate)+''' and rq<='''+convert(nvarchar,@EndDate)+''''
但是因为rq是char格式的,所以查不了
我想问的是,如何才能将rq在存储过程中化为datetime格式一样,将它的数据查询出来,存储过程应该如何写
望指点迷津

解决方案 »

  1.   

    set @sql=@sql+' where rq....
    ->
    select @sql=@sql+' where cast(rq as datetime)>@StartDate and cast(rq as datetime)<@enddate'
    再用sp_executeSql给对数赋值。
    或者:@sql=@sql+' where cast(rq as datetime)>'''+@StartDate+''' and cast(rq as datetime)'+'''<@enddate'+''''
      

  2.   

    set @sql=@sql+' where LTRIM(rq)>='''+convert(nvarchar,@StartDate)+''' and LTRIM(rq) <='''+convert(nvarchar,@EndDate)+'''' 只要转成字符就行了,而且能够转成时间类型就行,
      

  3.   

    看看你的RQ是什么格式的
    如果是 2009-10-31那:set @sql=@sql+' where rq>='''+convert(char(10),@StartDate,120))+''' and rq <='''+convert(char(10),@EndDate,120)+''''