......
......declare @LotInDate datetime,@LotOutDate datetime
通过前面的变量付置得到@LotOutDate,@LotInDate(这两个值是通过SQL得到两个时间字段的值).
并且我建了一个表,里面有LotInDate .LotOutDate字段用来测试保存在这两个字段到底有没有保存秒数.结果是保留了秒数的.
下面通过exec 插入到一个表里,结果是秒数被丢掉了.不知为什么?
并且由变量返回的表里的intime ,outtime 也是datetime结构.
为何经过exec后就发生了变化呢?exec ( 'insert into ' +@tablename+'('+@tablename+'Id,'+'AId,BId,CId,DId,Qty,EId,FId,GId,
HId,IId,Intime,Outtime,isactive ) values ('''+@pkId+''','''+@Aid+''','''+@BId+''','''+@CId+''','''+@Did+''',''1'','''+@EId+''','''
+@FId+''','''+@GId+''','''+@HId+''','''+@IId+''','''+@LotInDate+''','''+@LotOutDate+''',''1'''+')')谢谢!

解决方案 »

  1.   

    declare @LotInDate datetime,@LotOutDate datetime
    ==============
    declare @LotInDate varchar(30),@LotOutDate varchar(30)
    试试
      

  2.   

    把那条SQL语句输出来,是否有秒数!
    你传入什么参数,最后结果是怎样的?
      

  3.   

    declare @LotInDate datetime,@LotOutDate datetime
    这里是datetime类型,
    '''+@LotInDate+''','''+@LotOutDate+''',而这里是字符类型,你这里都没有进行数据类型转换,怎么会通过编译?应该改为:'''+convert(varchar(50),@LotInDate)+''','''+convert(varchar(50),@LotOutDate)+'''
      

  4.   

    exec ( 'insert into ' +@tablename+'('+@tablename+'Id,'+'AId,BId,CId,DId,Qty,EId,FId,GId,
    HId,IId,Intime,Outtime,isactive ) values ('''+@pkId+''','''+@Aid+''','''+@BId+''','''+@CId+''','''+@Did+''',''1'','''+@EId+''','''
    +@FId+''','''+@GId+''','''+@HId+''','''+@IId+''','''+@LotInDate+''','''+@LotOutDate+''',''1'''+')')
    两个@tablename?建议print('insert into ' +@tablename+'('+@tablename+'Id,'+'AId,BId,CId,DId,Qty,EId,FId,GId,
    HId,IId,Intime,Outtime,isactive ) values ('''+@pkId+''','''+@Aid+''','''+@BId+''','''+@CId+''','''+@Did+''',''1'','''+@EId+''','''
    +@FId+''','''+@GId+''','''+@HId+''','''+@IId+''','''+@LotInDate+''','''+@LotOutDate+''',''1'''+')')看看是什么结果?