DMD.ADOQuery.SQL.Text:=
'DATEDIFF(day,cast(year(dateadd(month,1,LastCopyDay)) as varchar(4))'
              +#39+'-'+#39
              +'cast(month(dateadd(month,1,LastCopyDay)) as varchar(2))'
              +#39+'-11'+#39
              +',GETDATE()'
         +') as 天数'
+' FROM LateFeeInfor where CID='J12'  DMD.ADOQuery.Open;说明: LastCopyDay 为LateFeeInfor表中的字段,datetime类型  我的目标,是把当前日期在月份上加1,生成新日期,然后日改成11号,从而生成新的日期.然后再与getdate()取得相差天数.在delphi代码客户端中,执行出现'-'附近错误,请高手来看看.

解决方案 »

  1.   

    将DMD.ADOQuery.SQL.Text输出到文件
    再直接插入到SQL
    试试
      

  2.   

    按照你的思想,把ADOQuery.text showmessage()出来了,发现问题了,少 + 号
    谢谢你
    结帖!
      

  3.   

    --建立测试数据
    create table LateFeeInfor (cid varchar(10),LastCopyDay DATETIME)
    INSERT INTO LateFeeInfor VALUES('J12','2007-07-08')
    --执行查询
    SELECT DATEDIFF(day,cast(year(dateadd(month,1,LastCopyDay)) as varchar(4))+'-'+cast(month(dateadd(month,1,LastCopyDay)) as varchar(2))+'-11',getdate()) from LateFeeInfor where cid='J12';
    --输出结果
    -34
    DMD.ADOQuery.SQL.Text:='SELECT DATEDIFF(day,cast(year(dateadd(month,1,LastCopyDay)) as varchar(4))+''-''+cast(month(dateadd(month,1,LastCopyDay)) as varchar(2))+''-11'',getdate()) from LateFeeInfor where cid=''J12''';
    DMD.ADOQuery.open;