在 delphi中的SQL语名怎么判断时间的呢??
如:
aaa.sql.add('select * from 表 where 时间字段='+DateToStr(时间变量));
aaa.open
这样不行的,条件都没办法满足的,要怎么做才可以呢???

解决方案 »

  1.   

    var
      strSql:string;
    begin
      strSQL:='select * from 表 where 时间字段='+''''+DateToStr(时间变量)+'''';
      aaa.sql.ass(strsql);
      aaa.open;
    end
      

  2.   

    var
      strSql:string;
    begin
      strSQL:='select * from 表 where 时间字段='+''''+DateToStr(时间变量)+'''';
      aaa.sql.ass(strsql);
      aaa.open;
    end这个行不通啊。这样就变成了,一个是时间型字段,与字符串的变量比较。
      

  3.   

    直接用formatdatetime()将日期格式化成与数据库中一致就可以了,不管什么数据库都应该可以,我在sql server/access/parodax等数据库中都测试过.
      

  4.   

    不是错,是可以执行,只是运行的结果并不是所想要用结果的。
    formatdatetime()怎么用呢??可以将整句SQL语句写出来吗》》》
    谢谢。
      

  5.   

    DateToStr返回值中间有'-'的,formatdatetime('yyyymmdd',now)就是一个真正的纯数字的字符型了
      

  6.   

    高手帮忙啊。。
    我用的是Assess数据库,数据库中显示的时间:2003-7-23那SQL语句要怎么写呢???
    formatdatetime('yyyymmdd',now)也是没办法解决问题啊我试过了。
      

  7.   

    数据库中时间的显示格式是根据计算机本身设置的时间格式显示的呀
    会不会是你的sql没有clear直接add的?
      

  8.   

    var
      D: TDateTime;
    begin
      ...
      Query1.Close;
      Query1.SQL.text := 'select * from Orders where SaleDate = :SaleDate';
      Query1.ParamByName('SaleDate').AsDateTime := D;
      Query1.Open;
      ...
    end;
      

  9.   

    var
      D: TDateTime;
    begin
      ...
      Query1.Close;
      Query1.SQL.text := 'select * from Orders where SaleDate = :SaleDate';
      Query1.ParamByName('SaleDate').AsDateTime := D;
      Query1.Open;
      ...
    end;
    这样子就可以了。有没有办法把写到SQL语句中呢???因为我有好几个判断啊,还有其他字符串的判断,那要怎么办呢?》??
      

  10.   

    再告诉你一个方法,把日期写成 mm/dd/yyyy 的字符串格式,
    就是:
       Query1.SQL.text := 'select * from Orders where SaleDate = ''' 
          + FormatDateTime('mm/dd/yyyy', D) + '''';
      

  11.   

    时间就是时间,日期就是日期,别说混乱了。
    如果是Access,在Delphi中SQL语句写法如下,你试试:
    strSQL:='select * from 表 where 日期字段=#'+DateToStr(时间变量)+'#';
    保你成功!^_^
    在保险就加上Access中的DateValue函数,比较时间就加上TimeValue函数!
      

  12.   

    我用过,用‘’引起来的时间日期比较时就是过滤不掉,对于Access这是个BUG!
    就用##,就对了!
      

  13.   

    没有用过Access, SQLServer可以做为一个串来输入。
      

  14.   

    找到资料了,Access就是用##来把DateTime引起来的,SQLServer中用''。
    可以通过 
    TADOConnection.OpenSchema(siProviderTypes,EmptyParam,EmptyParam,ADODataSet1)
    来取得数据类型的信息,得到的数据集中LITERAL_PREFIX,LITERAL_SUFFIX就是需要的信息。