1、sql.Add('select n_je from c_ysr where c_xm='''+cbx_srz.Text+''' and n_yf='''+s+''' ');
2、sql.Add('select n_je from c_ysr where c_xm='''+cbx_srz.Text+''' and n_yf=''s'' ');
字段n_yf是日期类型,s是字符串,上面两个sql语句都不对,都是标准表达式类型不匹配。
如何在sql中,如何查找日期类型的字段呢?

解决方案 »

  1.   

    改成如下格式应该没问题:
    1、sql.Add('select n_je from c_ysr where c_xm="'+cbx_srz.Text+'"'+ 'and' 
    + 'n_yf="'+s+'"');
      

  2.   

    sql.Add('select n_je from c_ysr where c_xm="'+cbx_srz.Text+'"'+ 'and' 
    + 'n_yf=to_date('+s+','''yyyy-mm-dd''');
    这是在oracle,用数据库函数!
      

  3.   

    依然如此,字段c-xm是文本  n_yf是日期类型
      

  4.   

    sql.Add('select n_je from c_ysr where c_xm='''+cbx_srz.Text+''' and n_yf='''+FormatDateTime('YYYY-MM-DD HH:MM:SS',StrToDateTime(s))+''' ');
    可能是s字符串的格式不是日期格式的
      

  5.   

    p1 := datetostr(DateTimePicker1.date);
      query14.close;
      query14.sql.clear;
      query14.sql.add('select n_je from c_ysr where c_xm='''+cbx_srz.Text+
                       ''' and n_yf=:n_yf1');  
      query14.ParamByName('n_yf1').asdatetime := strtodate(p1);
      query14.Prepare;
      query14.open;
      

  6.   

    楼上的我实验过了,parambyname 没定义,我用的是adoquery控件,
      

  7.   

    sql.Add('select n_je from c_ysr where c_xm='''+cbx_srz.Text+''' and n_yf=#'+s+'# ');
      

  8.   

    把S的值show出来看看,是不是合格的日期型呀
      

  9.   

    ADOQuery1.close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * from rsgzmx where rq='''+Edit1.Text+'''');
    ADOQuery1.Open;
    rq为日期型字段
      

  10.   

    var s:string;
    begin 
      s:=FormatDateTime('YYYY-MM-DD',Edit1.Text);
      ADOQuery1.close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('select * from rsgzmx where rq='''+s+'''');
      ADOQuery1.Open;
    //rq为日期型字段
    end;