我想写的语句是:
adoquery2.SQL.Add('select 字段名 from 表名 where datediff(d,字段名,变量);
请问,那个变量要怎么写,或用什么方法写在函数里。

解决方案 »

  1.   


    adoquery2.SQL.Add('select 字段名 from 表名 where datediff(d,字段名,' + 变量 + ') > 1'); 这里的“变量”得是字符串型的,如果不是,得转换一下,比如说:
    adoquery2.SQL.Add('select 字段名 from 表名 where datediff(d,字段名,' + IntToStr(变量) + ') > 1'); 
      

  2.   

    就用字符串拼吧;
    str:= 'select 字段名 from 表名 where datediff(d,字段名,'+var1+')';query.sql.add(str);
      

  3.   

    这样写
      adoquery2.SQL.Add('select 字段名 from 表名 where datediff(d,字段名,:param);
      adoquery2.SQL.Parameters[0].Value := 具体值;
      adoquery2.SQL.Open; 
      

  4.   


    adoquery2.SQL.Add('select 字段名 from 表名 where datediff(d,字段名,' + 变量 + ') > 1'); 这里的“变量”得是字符串型的,如果不是,得转换一下,比如说: 
    adoquery2.SQL.Add('select 字段名 from 表名 where datediff(d,字段名,' + IntToStr(变量) + ') > 1'); 
      

  5.   

    怎么就没人回答呢???
    我想写的语句是:
    s:='select sum(fscl) from tscqk where fcompanyid='+''''+a +''''+'and fdatetime=CONVERT(datetime,'+b+',102)';
    adoquery2.SQL.Add(s);
    有人知道哪里错了吗,执行时不出错,但没有值反回。
      

  6.   

    值得说明一下的是,函数里用的应该是日期型的变量吧,难就难在我不知道怎么叫字符串型的变成日期型的(SQL中)。
    希望牛人指点,不盛感激。
      

  7.   

    语句里加的就是字符串形的日期  
    比如str:='2008-8-8'
    语句里'select * from a where date='''+str+'''' 就行了  
    只要字符串是日期格式的 就会自动转换  如果不是日期格式的 就会报错
      

  8.   

    如果是access数据库就应该
    'select * from a where date=#'+str+'#' 
      

  9.   

    adoquery2.SQL.Add('select 字段名 from 表名 where datediff(d,字段名(日期型),日期变量);
    主要是在函数里引用变量时没反应,不知道为什么,也不出错,
    我想的原因可能是datediff里一定要的是日期型的变量,所才会没有值反回吧。
    我用的是SQL2000
    谁能帮帮我,最好在机子上试一下,然后把这句话再给告诉我怎么写。
      

  10.   

    s:='select sum(fscl) from tscqk where fcompanyid='''+a +''' and fdatetime=CONVERT(datetime,'+b+',102)'; 
      

  11.   

    s:='select sum(fscl) from tscqk where fcompanyid='+''''+a +''''+'and datediff(d,fdatetime,CONVERT(varchar(100), getdate(), 20))=0';
    这句执行的是对的,
    可是我想把那个getdate换成变量,或直接把convert(var........,gaetate()....)换成一个变量,
    我应该怎么写呢
      

  12.   

    a:='南矿';
    b:=datetostr(datetimepicker1.Time);
    //s:='select sum(fscl) from tscqk where fcompanyid='+''''+a +''''+'and datediff(d,fdatetime,CONVERT(varchar(100), getdate(), 20))=0';(这句有执行结果)
    s:='select sum(fscl) from tscqk where fcompanyid='+''''+a +''''+'and datediff(d,fdatetime,CONVERT(varchar(100), '+b+', 20))=0';(换成这句就没有执行结果了)
    adoquery2.sql.Clear;
    adoquery2.SQL.Add(s);
    edit2.Text :=adoquery2.SQL.Text ;
    adoquery2.Open ;
    edit1.Text:=adoquery2.Fields[0].AsString ;
    只是不出结果,也没有错误提示
      

  13.   

    s:='select sum(fscl) from tscqk where fcompanyid='+''''+a +''''+'and datediff(d,fdatetime,CONVERT(varchar(100), '+''''+b+''''+', 20))=0';就行了,不过好像没有人这样告诉我哦,不过也不能叫大家白辛苦