改为这样即可CREATE PROCEDURE dbo.TSumsend_allbytype
@begin datetime,@end datetime
AS
select * from table1 where date_ak between @begin and @end
GO
不需要使用动态SQL语句。

解决方案 »

  1.   

    CREATE PROCEDURE dbo.TSumsend_allbytype
    @begin datetime,@end datetime
    AS
    select * from table1 where date_ak between @begin and @end
    GO
      

  2.   

    如果确实要那样子的话就这样吧。set @sql='select * from table1 where date_ak  between '+''''+convert(varchar(18),@begin)+''''+' and '+''''+convert(varchar(18),@end)+''''exec(@sql)
      

  3.   

    yangys(杨杨) ,是確實要那樣,我試下看看.
      

  4.   


    set @sql='select * from table1 where date_ak  between '+''''+convert(varchar(18),@begin,126)+''''+' and '+''''+convert(varchar(18),@end,126)+''''exec(@sql)
      

  5.   

    還是不可以啊,執行時是不是exec aaaa '2004/4/1','2005/12/1',用'2005/12/1'這樣傳入參數應該不會有問題吧.你們的過程是不是先把傳進去的日期類型轉換為string,然後再讓他變為datetime型的阿.
      

  6.   

    CREATE PROCEDURE dbo.TSumsend_allbytype
    @begin datetime,@end datetime
    AS
    declare @sql varchar(8000)
    set @sql='select * from table1 where date_ak between '''+convert(varchar(19),@begin,120)+''' and '''+convert(varchar(19),@end,120)+''''
    exec @sql
      

  7.   

    convert(varchar(10),@begin,111)搞定了.多謝大家.