sql := ' update tablename set columnname=columnname+10 ';
QSel.Active := False;
QSel.SQL.Clear;
QSel.SQL.Add(sql);
QSel.ExecSQL; 上面的语句中若columnname列为整型是没有问题的,现在若columnname列是用字符串表示的时间,能不能也用这种形式写:目的是将本列的值加上一段时间再赋给自己,可能需要类型转换.现在我是先select再update,觉得麻烦.请帮忙!                      

解决方案 »

  1.   

    用DateAdd函数试一下,应该可以的
      

  2.   

    如果是字符串
    sql := ' update tablename set columnname=columnname+'''+10+''' ';
      

  3.   

    你用SQL的函数进行日期相加是可以的
      

  4.   

    sql := ' update tablename set columnname=datetimetostr(incDay(strtodatatime(columnname),10))';QSel.close;
    QSel.SQL.Clear;
    QSel.SQL.Add(sql);
    QSel.ExecSQL; 
      

  5.   

    呵呵
    写错了一个字母:
    sql := ' update tablename set columnname=datetimetostr(incDay(strtodatetime(columnname),10))';记得
    uses
      DateUtils
      

  6.   

    sql := ' update Time set Start='''+FormatDateTime('YYYY-MM-DD HH:NN:SS',strtodatetime(Start)+timelong)+''' ';QSel.close;
    QSel.SQL.Clear;
    QSel.SQL.Add(sql);
    QSel.ExecSQL; 想用上面形式的代码,但出错,请帮忙!
      

  7.   

    sql := ' update Time set Start='+char(39)+FormatDateTime('YYYY-MM-DD HH:NN:SS',strtodatetime(Start)+timelong)+char(39) ;
    在Delphi中,单引号可以用char(39)表示,你试试吧!
      

  8.   

    单引号到不是什么大错,主要是说strtodatetime(Start)中的Start不是一个有效的时间型,问题好像是在怎么把列值取出来.苦恼啊!