select * from SumDailyByTSPC WHERE  SumDate BETWEEN 2004-12-13 AND 2004-12-20相当于:
select * from SumDailyByTSPC WHERE  SumDate BETWEEN dateadd(day,2004-12-13,'1900-1-1') AND dateadd(day,2004-12-20,'1900-1-1')

解决方案 »

  1.   

    --日期应该加'的
    set @str='select * from SumDailyByTSPC WHERE SumDate BETWEEN '''+CONVERT(VARCHAR(20),@BeginDate,20)+''' AND '''+CONVERT(VARCHAR(20),@EndDate,20)+''''
    print @str
      

  2.   

    问题在此处:SET  @BeginDate =GETDATE()-7
    SET  @EndDate =GETDATE()此处已经强制性将datetime类型转换成了char(10),而后CONVERT(VARCHAR(20),@BeginDate/@EndDate,20)操作所转换的 @BeginDate/@EndDate 已经是字符串,任你怎么转换,格式也不会变化了。
      

  3.   

    SET  @BeginDate =CONVERT(VARCHAR(20),GETDATE()-7,20)
    SET  @EndDate =CONVERT(VARCHAR(20),GETDATE(),20)
    SET  @BeginDate =GETDATE()-7
    SET  @EndDate =GETDATE()当然不一样,第一次使用convert转换过的'2004-12-20'的格式
    第二次是没有转换的格式
      

  4.   

    多谢各位,感觉应该如 libin_ftsafe(子陌红尘) ,和 LBYYBL(o_o) 所说的~~~
    多谢各位~~