DECLARE @StartTime datetime ,
@s varchar(4000)SELECT @StartTime = '2004-4-13 20:00:00'SELECT @s='DATEDIFF(SECOND, ' + char(39) + cast(@StartTime as varchar(40)) + char(39) + ', 字段1) FROM 表1'select  (@s)

解决方案 »

  1.   

    DECLARE @StartTime datetime ,
    @s varchar(4000)SELECT @StartTime = '2004-4-13 20:00:00'SELECT @s='select --你的语句中为什么没有select ?
    DATEDIFF(SECOND, ' + char(39) + cast(@StartTime as varchar(40)) + char(39) + ', 字段1) FROM 表1'print(@s)  --查询分析器中显示@s的值
    exec (@s)
      

  2.   

    就少了一个select ,所以你生成的sql语句是错的,改成上面的就可以了.
      

  3.   

    DECLARE @StartTime datetime 
    SELECT @StartTime = '2004-4-13 20:00:00'
    SELECT DATEDIFF(SECOND,@StartTime,字段1) FROM 表1
      

  4.   

    或者:
    DECLARE @StartTime datetime ,
    @s varchar(4000)
    SELECT @StartTime = '2004-4-13 20:00:00'
    SELECT @s='select DATEDIFF(SECOND,'''+@StartTime+''',字段1) FROM 表1'
    exec (@s)
      

  5.   

    还有:DECLARE @StartTime datetime ,@T int,
    @s varchar(4000)SELECT @StartTime = '2004-4-13 20:00:00'SELECT @s='DATEDIFF(SECOND, ' + char(39) + cast(@StartTime as varchar(40)) + char(39) + ', 字段1)/ ' + @T + ' FROM 表1'
    提示:
    将 varchar 值 'DATEDIFF(SECOND, '04 13 2004  8:00PM', 字段1) /' 转换为数据类型为 int 的列时发生语法错误。请问何故?
      

  6.   

    看错误提示,是int类型的,int类型怎么能跟日期比较呢?