dt是timestamp列,由于我的语句是动态生成的.
declar @dt varchar(100)
select @dt=convert(varchar(100),dt) from t
select * from t where (varchar(100),dt)=@dt---这样可以
exec('select * from t where (varchar(100),dt)='+@dt)--关键是这样不可以怎么办呢

解决方案 »

  1.   

    exec('select * from t where (varchar(100),dt)='''+@dt+'''')--关键是这样不可以 
      

  2.   

    exec('select * from t where convert(varchar(100),dt)='''+@dt+'''')
      

  3.   


    create table ta(dt timestamp)
    godeclare @dt varchar(100) ,@sql varchar(8000)
    set @dt = 'asdfsadf'exec('select * from ta where cast(dt as varchar(100))='''+@dt+'''')drop table ta
      

  4.   

    declare @dt bigint 
    select @dt=convert(bigint,dt) from t 
    exec('select * from t where dt='+convert(varchar(30),@dt))
      

  5.   

    declare @dt bigint 
    declare @sql varchar(800)
    select @dt=convert(bigint,dt) from t 
    set @sql = 'select * from t where dt= ' + convert(varchar(30),@dt)
    exec(@sql)
      

  6.   

    create table ta(dt timestamp)
    godeclare @dt varchar(100) ,@sql varchar(8000)
    set @dt = 'asdfsadf'exec('select * from ta where cast(dt as varchar(100))='''+@dt+'''')drop table ta