ALTER PROCEDURE gDatabyTime
@DateF DateTime,
@DateT DateTime
AS
declare @sqlstr nvarchar(400)set @sqlstr = 'select * from [order] where Order_Get between '''+Convert(nvarchar(10),@DateF)+''' and '''+Convert(nvarchar(10),@DateT)+''''exec sp_executesql  @sqlstr请问上面的存储过程为什么取不出数据啊
我传进来的datetime 是1/1/2004这种格式数据库中是2004-11-26 14:38:53这样的

解决方案 »

  1.   

    直接用
    select * from [order] where Order_Get between @DateF and @DateT
    不可以吗?
    为什么要使用sp_executesql  
    你这个又不是动态SQL
      

  2.   

    你的 order_get字段是什么数据类型???
      

  3.   

    SELECT *
    FROM [order]
    WHERE (Order_Get BETWEEN '1/1/2004' AND '1/1/2005')我直接在数据库里这样写也取不出数据
      

  4.   

    SELECT *
    FROM [order]
    WHERE (Order_Get BETWEEN '1/1/2004' AND '1/1/2005')
    ---
    要between两个时间吧
    SELECT *
    FROM [order]
    WHERE (Order_Get BETWEEN convert(DateTime,'1/1/2004' AND convert(datetime,'1/1/2005'))
      

  5.   

    select * from [order] where Order_Get between '01  1 2004' and '01  1 2005'上面是我从存储过程里面获得的数据库查询语句
    确实取不出来高手帮忙
      

  6.   

    ALTER PROCEDURE gDatabyTime
    @DateF DateTime,
    @DateT DateTime
    AS
    declare @sqlstr nvarchar(400)set @sqlstr = 'select * from [order] where Order_Get between '''+convert(nvarchar(10),@DateF,120)+''' and '''+convert(nvarchar(10),@DateT,120)+''''exec sp_executesql  @sqlstr上面这样写解决了。