如果在query里执行的话,需要在
'select * from jsqk.db where 还书日期-借书日期<=30' 这一句
之后再对还书日期和借书日期两个变量赋值

解决方案 »

  1.   

    还书日期和借书日期是日期变量?说清楚你到底要干什么?它们是变量,你的sql语句错了
      

  2.   

    你这个语句本身没有错误,我已经测试过,在SQL Server里有结果集生成,可能是你用的数据库不支持吧……试着换个方式来写……也许可以……
      

  3.   

    唉,你应该写为:'select * from jsqk.db where :还书日期-:借书日期<=30' ,然后,再向这两个变量赋值。
      

  4.   

    Transact SQL中用DateDiff函数取两个日期型变量之间给定日期类型的数值
    如天数:DateDiff(Day,:还书日期, :借书日期)< =30
      

  5.   

    为了不出现错误,你应该写为:'select * from jsqk.db where :还书日期-:借书日期<=30' ,然后,再向这两个变量赋值。 
      

  6.   

    我觉得BOB7946说的有道理啊!这样应该没有问题的!
      

  7.   

    如果借和还是变量, 哪你的Sql语句还有什么意思?
      

  8.   

    不好意思,借书和还书是两个日期类型的字段名,数据库是paradox数据库。
      

  9.   

    那就这样吧:'select * from jsqk.db where query1.fieldbyname(还书日期).asdate-:query1.fieldbyname(借书日期).asdate<=30' ,就搞定了。
      

  10.   

    Bob7946,我用两个参数代替两个字段的值,查询结果不对,例如“2001-06-12”和“2001-04-12”,也在结果集中;sql改为>=30,则没有结果。 两个字段的日期值是用date 函数取值的。
    不知为何故?
      

  11.   

    如果两个日期都是字段的话,你的sql没有错,我在delphi 的sql explorer 中测试了这个sql,没有问题。
      

  12.   

    to able(阿牛):你还是用StrToDate函数来转换吧。
      

  13.   

    你这样写等于select * from jsqk.db where '2001-06-12'-'2001-04-12'>=30,
    这时where子句相当于61>=30,是个恒等式,当然会取出全部记录应该像Bob7946(X度空间)所说的那样,而不是用参数代替你自己先搞清楚你到底要做什么事再说吧!
      

  14.   

      wanwangzhiwang(万王之王) 和Bob7946(X度空间) 说的很好,我很受启发。但是
    'select * from jsqk.db where query1.fieldbyname(还书日期).asdate-query1.fieldbyname(借书日期).asdate<=30'不能执行,出错了。
      请进一步帮忙。
      

  15.   

    query1.fieldbyname()中的参数是字符型的,要加引号的,即:query1.fieldbyname('yourfieldname').asXXXX
      

  16.   

    你的sql没有问题
    问题是你的数据库中借书和还书日期是否有空值
    如果有的话可能出现问题
      

  17.   

    我完全胡涂了,你到底想干什么?
    是不是想查询还书日期与借书日期相差小于30天的记录?如果是那应该写成:
    'select * from jsqk.db where 字段名(还书日期)-字段名(借书日期)<=30'
      

  18.   

    wanwangzhiwang(万王之王),我的问题就是查询还书日期与借书日期相差大于30天的记录,
     字段名就是"还书日期"和"借书日期",完整的语句该怎么写呢?
     谢谢指教
      

  19.   

    如果你的字段名分别是date1,date2:
    select * from jsqk where date1-date2>30
    不需在jsqk后加.db
      

  20.   

    wanwangzhiwang(万王之王),关键是where后面的语句不对,能帮忙写完整的语句吗