SQL 2005
 declare @StartDate datetime,
         @EndDate dateTimeselect @tsql = @tsql + ' and a.UP_Time between ' + @StartDate + ' and ' + @EndDate
上述是时间比较的问题。编译没报错,执行就报错“从字符串向datetime转换时失败”
哪里写错了? 

解决方案 »

  1.   


    ' and a.UP_Time between ' + 字符串@EndDate @StartDate  datetime 类型
      

  2.   

    这样可不可以select @tsql = @tsql + ' and a.UP_Time between ' + convert(varchar(20),@StartDate) + ' and ' + convert(varchar(20), @EndDate)
      

  3.   


    一句话,先把datetime 类型转换nvarchar ,再去连接
      

  4.   

     declare @StartDate datetime, 
             @EndDate dateTime 
      
    select @tsql = @tsql + ' and a.UP_Time between ' + CONVERT(VARCHAR(30),@StartDate,120) + ' and ' + CONVERT(VARCHAR(30),@EndDate,120)
      

  5.   

    按照各位写的,上述错误没了
    不过出了新错误
    说是时间附近有语法错误我传了时间参数进去
    打印了sql语句
    a.UP_Time between 2013-04-26 00:00:01 and  2013-04-26 15:00:01这两个时间值缺少引号吧?我手动加了单引号可以执行的,语句里应该怎么加啊?
      

  6.   

     DECLARE @tsql NVARCHAR(max)
     SET @tsql=''
     declare @StartDate DATETIME='2013-04-26 00:00:01', 
             @EndDate dateTime ='2013-04-26 15:00:01'
      --PRINT CONVERT(VARCHAR(30),@StartDate,120)
      --PRINT CONVERT(VARCHAR(30),@EndDate,120)SELECT   @tsql =@tsql+ ' and a.UP_Time between ' +''''+CONVERT(VARCHAR(30),@StartDate,120)+'''' +' and ' +''''+CONVERT(VARCHAR(30),@EndDate,120)+''''
    print @tsql