一个借书的信息表tsjyxxb,里面有字段jsrq(借书日期),jyts(借阅天数)
现在是想查询有无超过时间的借阅信息,用现在的日期与借书日期进行比较,当数字大于借阅天数时表示该条信息超期
我用的是ASSECC数据库
select * from tsjyxxb where DateDiff(''D'',jsrq,GetDate())>jyts
这个语句好象执行完没有数据出来的,但实际是应该有的。
请各位帮指点下应该怎么修改这个语句
谢谢!

解决方案 »

  1.   

    1、access版本是否支持DateDiff。我的就不支持。
    2、GetDate()这个函数access是否支持。换个别的函数或是直接先用日期代替下试下。
      

  2.   

    Daysbetween,它带两个参数Daysbetween(a,b),返回一个整数,DateTimePicker有个默认时间的设置,当把DateTimePicker放置在窗体上时,其time属性自动记录当时的时间,如14:42:18,而DateTimePicker1.Time=用户选择的日期+14:42:18,而DaysBetween函数计算的是两个参数之间的整数天,所以当选择2003-11-13时,比较的实际是2003-11-13的14:42:18和2003-11-12的0:00:00,超过了1天,所以返回值为1,当选择2003-11-11时,比较的实际是2003-11-11的14:42:18和2003-11-12的0:00:00,不足1天(24小时),所以返回值为0。
    解决办法有2个:
    一个是修改DateTimePicker1的Time属性为0:00:00,
    一个是把i:=Daysbetween(strTodate('2003-11-12'),DateTimePicker1.Time);修改为
    i:=DaysBetween(strTodate('2003-11-12'),
              EncodeDateTime( YearOf(DateTimePicker1.Time),
                              MonthOf(DateTimePicker1.Time),
                              DayOf(DateTimePicker1.Time),
                              0,0,0,0));
    DaysBetween比较的两个日期如果其时间小于24小时,哪怕差1秒,其返回的值还是0。
      

  3.   

    用现在的日期与借书日期进行比较
    应该是现在日期在前
    select * from tsjyxxb where DateDiff(''D'',GetDate(),jsrq)>jyts 
      

  4.   

    ACCESS下时间日期直接比较 > and < 来比较区间
      

  5.   

    with adoquery1 do
    begin
      close;
      sql.text := 'select * from tsjyxxb where jsrq-jsts>=:d1';
      parameters.ParamByName('d1').Value := now();
      Open;
    end;换种写法试试
      

  6.   

    这个该怎么使用呢,现在主要是根据字段中的借书日期和借阅天数来判断,这个方法的SQL语句该怎么写呢??请指点下,没搞清楚这个。
      

  7.   


    好像应该 是jsrq+jsts<:d1 (借书日期+过期天数<当前日期 时就过期了.
      

  8.   

    ACCESS的时候格式好像是用##的
      

  9.   

    这个?SQL.Add('select * from a where [时间字段] >= #'+ 时间字串 +'# and [StoreDate] <= #' + 时间字串+ '#');
      

  10.   

    if (beginTime != null && !"".equals(beginTime) && endTime != null && !"".equals(endTime)) {
    //查询条件的起始时间及结束时间都不为空时,查询返回 开始时间及结束时间都在查询条件之内的结果
    querySql += " and to_char(beginDate,'yyyy-mm-dd hh:mm:ss') between  '" + beginTime + "' and '" + endTime + "'";
    querySql += " and to_char(finishDate,'yyyy-mm-dd hh:mm:ss') between  '" + beginTime + "' and '" + endTime + "'";
    } else if (beginTime != null && !"".equals(beginTime) && (endTime == null || "".equals(endTime))) {
    //查询条件的起始时间不空,结束时间为空时,查询返回 起始时间 在 开始时间之后的结果
    querySql += " and to_char(beginDate,'yyyy-mm-dd hh:mm:ss') > '" + beginTime + "'";
    } else if (endTime != null && !"".equals(endTime) && (beginTime == null || "".equals(beginTime))) {
    querySql += " and to_char(finishDate,'yyyy-mm-dd hh:mm:ss') < '" + endTime + "'";
    }