select l_date 借阅日期, dateadd(mm,2,l_date) 应还日期 from lend 
为什么 不识别 dateadd(mm,2,l_date)  这个函数呀。
可是在在SQL 中 这个就可行的呀 
我用的是 Access 数据库。当把它移植到 SQL 中时 就可以 输出正确结果为:借阅日期   应还日期2005-3-2   2005-5-2  
 
急于 求助!!谢谢 各位高手帮忙了!!

解决方案 »

  1.   

    ACCESS很多东西都不支持
    别想了 DELPHI里也有相应功能的函数
      

  2.   

    是的,我感觉也是 access 不支持。但 delphi 中有相应的 功能函数??
    帮忙 提示一下吧 ,我正急用呢。谢谢各位 大哥大姐了。
      

  3.   

    这个 和 用ADO ,BDE 有关系吗??我用的是 BDE. 
    用BDE 能用这样 select l_date 借阅日期, l_name 姓名 from lend 吗??
      

  4.   

    DaysBetween
    看看DateUtils单元
    SQL语法和数据库驱动无关
      

  5.   

    dh9450(荡尽尘埃) 你好:
     你能不能 帮我呀 ,我找不到 dateutils 单元呀 。
    帮忙写一下 行吗???
      

  6.   

    在Access中这样写就行了,要加个'SELECT DateAdd('m', 2, '2005-07-01')
    select l_date 借阅日期, dateadd('m',2,l_date) 应还日期 from lend 
    设置 描述 
    yyyy 年 
    q 季 
    m 月 
    y 一年的日数 
    d 日 
    w 一周的日数 
    ww 周 
    h 时 
    n 分钟 
    s 秒 
      

  7.   

    跟ADO BDE无关
    DATEADD ( datepart , number, date ) 
    SQL Server里的第一个参数:
    datepart是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。日期部分 缩写 
    Year yy, yyyy 
    quarter qq, q 
    Month mm, m 
    dayofyear dy, y 
    Day dd, d 
    Week wk, ww 
    Hour hh 
    minute mi, n 
    second ss, s 
    millisecond ms 
    Access不知道Delphi可以实现类似功能,直接加数就可以
      

  8.   

    跟ADO BDE无关
    DATEADD ( datepart , number, date ) 
    SQL Server里的第一个参数:
    datepart是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。日期部分 缩写 
    Year yy, yyyy 
    quarter qq, q 
    Month mm, m 
    dayofyear dy, y 
    Day dd, d 
    Week wk, ww 
    Hour hh 
    minute mi, n 
    second ss, s 
    millisecond ms 
    Access不知道Delphi可以实现类似功能,直接加数就可以
      

  9.   

    qxx.Close;
           // dateadd(mm,2,[l_date]) hh,    qxx.SQL.Text:='SELECT a.r_no,a.b_no, a.l_date,dateadd(mm,2,l_date) 应还日期 ,c.b_name,c.author,c.publish,b.* from lend a, readers b,books c '
        + 'where b.r_no=a.r_no and a.b_no=c.b_no and c.state= false and b.r_no='+quotedstr(edit1.Text);     // application.MessageBox(pchar(QXX.SQL.Text ),'');
          qxx.Open;
          if qxx.RecordCount=0 then
           begin
           showmessage('对不起没有此读者信息!!!');
           dbg.Visible:=false;
           edit1.SetFocus;
           exit;
           end
          else
        begin
        DBEdit1.DataSource:=dsxx;
        DBEdit1.DataField:='r_name' ;
        DBEdit2.DataSource:=dsxx;
        DBEdit2.DataField:='sex' ;
        DBEdit3.DataSource:=dsxx;
        DBEdit3.DataField:='age' ;
        DBEdit4.DataSource:=dsxx;
        DBEdit4.DataField:='department' ;
        DBEdit5.DataSource:=dsxx;
        DBEdit5.DataField:='class' ;
        DBEdit6.DataSource:=dsxx;
        DBEdit6.DataField:='phone' ;
        dbg.Visible:=true;
       dbg.DataSource:=dsxx;
       dbg.Columns[0].FieldName:='b_no';
       dbg.Columns[1].FieldName:='b_name';
       dbg.Columns[2].FieldName:='author';
       dbg.Columns[3].FieldName:='publish';
       dbg.Columns[4].FieldName:='l_date';
       dbg.Columns[5].FieldName:='应还日期';
       //dbg.Columns[6].FieldName:='paymoney';
       dbg.ReadOnly:=false;
       edit2.Text:=inttostr(qxx.RecordCount);
       if edit2.Text>='5' then
       begin
         showmessage('此读者已借满五本图书,不能再借了!!');
         e_bno.Enabled:=false;
       end
       else    e_bno.Enabled:=true;
       end;
     这样是不行的 。提示 SQL 中的dateadd(mm,2,l_date) 应还日期  表达式 错误!!
    dateadd('m',2,l_date) 应还日期 我也试过了 不行的。 求求 你们了!!!
      

  10.   

    SELECT DateAdd('m', 2, '2005-07-01')
    结果是:'2005-09-01'我不知道你到底试过没有,我没有做过这样的程序是不会写出来的
    呵呵,不知道该说你什么好
    其实不是很简单的就验证了吗,你在Access中新建一个查询,写个语句测试这个函数不就行了????
    你上面的代码中还是dateadd(mm,2,l_date),不听别人的意见啊,都已经说给你了
      

  11.   

    全给你写出来好了:qxx.SQL.Text:='SELECT a.r_no,a.b_no, a.l_date,dateadd(''mm'', 2, a.l_date) 应还日期 ,c.b_name,c.author,c.publish,b.* from lend a, readers b,books c '
        + 'where b.r_no=a.r_no and a.b_no=c.b_no and c.state= false and b.r_no='+quotedstr(edit1.Text);
      

  12.   

    Sorry!!!!
    写错了这个dateadd(''mm'', 2, a.l_date)
    qxx.SQL.Text:='SELECT a.r_no,a.b_no, a.l_date,dateadd(''m'', 2, a.l_date) 应还日期 ,c.b_name,c.author,c.publish,b.* from lend a, readers b,books c '
        + 'where b.r_no=a.r_no and a.b_no=c.b_no and c.state= false and b.r_no='+quotedstr(edit1.Text);
      

  13.   

    thank you ! hanlin2004 我挺你的话了 ,真的。我都试过了。
     我在Access中建了一个查询,就可以了。我也是直接调用的。着这样的:
    qxx.SQL.Text:='SELECT a.r_no,a.l_date,b.r_name,b.phone,b.department,b.class,c.b_name,backdate 
    from lend a, readers b,books c ,backdate where a.r_no=b.r_no and a.b_no=c.b_no and backdate.b_no=c.b_no and a.b_no='+quotedstr(edit1.Text);
     查询名表backdate中是这样写的 :SELECT [r_no], [b_no], DateAdd("m",2,[l_date]) AS backdate
    FROM lend; 
    但是这样 :
    qxx.SQL.Text:='SELECT a.r_no,a.b_no, a.l_date,dateadd(''m'', 2, a.l_date) 应还日期 ,c.b_name,c.author,c.publish,b.* from lend a, readers b,books c '
        + 'where b.r_no=a.r_no and a.b_no=c.b_no and c.state= false and b.r_no='+quotedstr(edit1.Text);就不行。总之:我是在您的帮助下做出来的。谢谢! 其实我就是 想用最好的dateadd(''m'', 2, a.l_date) 应还日期 而已。不过这样不行呀。 
     谢谢了 !!!!