Query2.SQL的日期行是怎么写的呢?
Form1.Query2.SQL.Clear;
Form1.Query2.SQL.Add('update ylwb set 已经上机时间='''+timetostr(Now)+'''-开始计费时间');
Form1.Query2.ExecSQL;
Form1.Table1.Refresh;
系统报错说:
Type mismatch in expressiom  (我的Now:=time;)
上面的语句哪里错了呢?

解决方案 »

  1.   

    Form1.Query2.SQL.Clear;
    Form1.Query2.SQL.Add('update ylwb set 已经上机时间='''+timetostr(Now)+'''-开始计费时间');//字符串进行减操作?不行吧!timecount:=now-starttime;//这个starttime要你从数据库中取了
    form1.query2.sql.add('update ylwb set 已经上机时间='''+timetostr(timecount)+'''');
    Form1.Query2.ExecSQL;
    Form1.Table1.Refresh;
      

  2.   

    用formatdateTime('yyyy"-"mm"-"dd',Now)就可以了
      

  3.   

    你要的是2个时间的差值,应该是数学运算,而你的SQL语句中用的是字符串减法运算,是不行的,比如字符串“ABCD”- “CD”=“AB”,这是你要的结果吗?显然不是。要想实现你要的结果,有2种方法:一种是先算出这个时间差,然后在SQL语句中将这个差值转换为字符串;另外一种是直接在SQL语句中写这个过程,其实思路是一样的,但是建议使用第一种方法,因为那样过程很清楚——即易读性好。如果使用第二种方法,请参考以下代码:
     Form1.Query2.SQL.Add('update ylwb set 已经上机时间= FormatDateTime('yyyy-mm-dd hh:mm:ss',Now() ) - 开始计费时间');
    注意:FormatDateTime函数的第一个参数的日期时间格式'yyyy-mm-dd hh:mm:ss'必须和“开始计费时间”格式一致;——我不知道这样做能否得到正确的结果,因为我没试过:)
    如果“已经上机时间”的单位是“小时/分钟/秒”中的一种的话,使用SQL函数DATEDIFF ( datepart , startdate , enddate ) ,这样可以得到准确的结果日期部分 缩写 
    year yy, yyyy 
    quarter qq, q 
    Month mm, m 
    dayofyear dy, y 
    Day dd, d 
    Week wk, ww 
    Hour hh 
    minute mi, n 
    second ss, s 
    millisecond ms