s:string;
s1:Tdatetime;
s:='2004-3-31';
s1:=strtodate(s);
query.sql.add('select * from table where date='+s1);
query.execsql;有什么错误吗?编译时通不过,说是类型不匹配。datetime 和string 不匹配。
可是我已经转换成datetime了呀?我以为和字符串比较一样要加上双引号?可是我加了双引号也不对?应该怎么比较呢?另:paradox可以执行query.sql.add('update table set where=what where...')
query.execsql;这样的更新语句吗?

解决方案 »

  1.   

    s:string;
    s1:Tdatetime;
    s:='2004-3-31';
    s1:=strtodate(s);
    query.sql.add('select * from table where date='+''''+s1+'''');
    query.execsql;
      

  2.   

    在进行查询的时候数据库的datetime本身就可以用string型来进行比较的,
    所以可以这样写:
    s:string;
    s:='2004-3-31';
    query.sql.add('select * from table where date='''+s+'''');
    query.execsql;
      

  3.   

    而只有使用参数的时候,才进行转化的,如下:
    s:string;
    s1:Tdatetime;
    s:='2004-3-31';
    s1:=strtodate(s);
    query.sql.add('select * from table where date=:a2');
    query.parambyname('a2').asdatetime:=s1;
    query.execsql;
      

  4.   

    在有就是:
    query.sql.add('select * from table where date=:a2');
    query.parambyname('a2').asdatetime:=s1;
    query.open;//select语句是用open进行打开的!而不是execsql
      

  5.   

    s:string;
    s1:Tdatetime;
    s:='3/31/2004';
    s1:=strtodate(s);
    query.sql.add('select * from table where date='+s1);
    query.execsql;
      

  6.   

    query.sql.add('select * from table where date=:a2');
    query.parambyname('a2').value:=strtodate('2003-1-2')
    query.open;
      

  7.   

    s:string;
    s1:Tdatetime;
    s:='''3/31/2004''';query.sql.add('select * from table where date='+s);
    query.execsql;
      

  8.   

    dickeybird888(于伟刚) 的方法,我感觉经常用到