select l_date 借阅日期, dateadd(mm,2,l_date) 应还日期 from lend
为什么 不识别 dateadd(mm,2,l_date) 这个函数呀。
可是在在SQL 中 这个就可行的呀
我用的是 Access 数据库。当把它移植到 SQL 中时 就可以 输出正确结果为:借阅日期 应还日期2005-3-2 2005-5-2
急于 求助!!谢谢 各位高手帮忙了!!
为什么 不识别 dateadd(mm,2,l_date) 这个函数呀。
可是在在SQL 中 这个就可行的呀
我用的是 Access 数据库。当把它移植到 SQL 中时 就可以 输出正确结果为:借阅日期 应还日期2005-3-2 2005-5-2
急于 求助!!谢谢 各位高手帮忙了!!
别想了 DELPHI里也有相应功能的函数
帮忙 提示一下吧 ,我正急用呢。谢谢各位 大哥大姐了。
用BDE 能用这样 select l_date 借阅日期, l_name 姓名 from lend 吗??
看看DateUtils单元
SQL语法和数据库驱动无关
你能不能 帮我呀 ,我找不到 dateutils 单元呀 。
帮忙写一下 行吗???
select l_date 借阅日期, dateadd('m',2,l_date) 应还日期 from lend
设置 描述
yyyy 年
q 季
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒
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可以实现类似功能,直接加数就可以
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可以实现类似功能,直接加数就可以
// 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) 应还日期 我也试过了 不行的。 求求 你们了!!!
结果是:'2005-09-01'我不知道你到底试过没有,我没有做过这样的程序是不会写出来的
呵呵,不知道该说你什么好
其实不是很简单的就验证了吗,你在Access中新建一个查询,写个语句测试这个函数不就行了????
你上面的代码中还是dateadd(mm,2,l_date),不听别人的意见啊,都已经说给你了
+ '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(''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);
我在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) 应还日期 而已。不过这样不行呀。
谢谢了 !!!!