q1.close;
q1.sql.clear;
q1.sql.add('update table1 set 开始时间=left(开始时间,len(开始时间)-1)');
q1.open;以上语句一运行,就会出错,提示 len里面的参数类型出错,请问len在这种情况下是怎样使用的?我试过 
len("开始时间")这样写的话,得到不是实际字段内容的长度,而是“开始时间”这四个中文的长度.望各位帮帮忙。

解决方案 »

  1.   

    q1.close; 
    q1.sql.clear; 
    q1.sql.add('update table1 set 开始时间=left(convert(varchar(10),开始时间,120),len(convert(varchar(10),开始时间,120),)-1)'); 
    q1.open; 
      

  2.   

    Len()返回的是字符串类型的长度,日期类型的肯定不行了,转换一下
      

  3.   

    select getdate()
    /*
    2008-05-06 12:24:05.733
    */select left(replace(replace(replace (Convert(varchar(24),getdate(),120),':',''),'-',''),' ',''),len(getdate())-4)
    /*
    20080506124205
    */
      

  4.   

    按以上方法,也出错了。提示Convert没有定义我用的是access+ado
      

  5.   

    本人才从VB转过来,新手,好象在SQL语句中如果出现变量表术是非常麻烦的,必须先将"开始时间"读如变量,该变量在SQL中表述时候不加引号
    var
    T:string
    begin
    T:=ado1.['开始时间'].asstring;
    //下面再利用T开始你的查找
    end;才开始学习,思路应该没问题,只是语句的表述可能不正确
      

  6.   

    取汉字的长度 用datalength()
    ACCESS很多都不支持 不如在程序里处理