求助 sql.where 两个日期之间的问题(30分)

  • 主题发起人 主题发起人 Laird
  • 开始时间 开始时间
L

Laird

Unregistered / Unconfirmed
GUEST, unregistred user!
sql.add ('where riqi>=:date() and riqi <:incday(date(),3)');

这里的riqi后面该怎么写

sql.数据库
 
应该'where riqi>=:rq1 and riqi <:rq2
parambyname('rq1').asdatetime:=date;
parambyname('rq2').asdatetime:=incday(date,3)
 
rq1
rq2 需要在数据库里建字段吗/
 
不需要,他是参数
 
不用,只是两个参数.
 
sql.add('where riqi>=' + '''' + datetimtostr(date) + '''' + ' and riqi < ');
sql.add('''' + datetimetostr(incday(date,3)) + '''');
 
如果你是要用系统时间的话,则最好直接使用数据库中的函数,而不要使用delphi的日期
函数,以避免客户机和服务器存在着时间差异。
不熟悉sql,应该有对日期进行增减的函数。
 
不同的数据库有不同的做法,Access比较麻烦,要通过转换。
标准的Sql Server就好多了,直接使用字符串就可以了比较了。
 
sql.add ('where riqi>=:date() and riqi <:incday(date(),3)');
为什么要这样写,这样虽然可以,但影响了速度!
例如在Access中:
format('where riqi between #%s# and #%s#'',[DateTostr(date),datetostr(incday(date(),3))]);
以上只是个例子,具体数据库不同,还有一些变化,但大体框架如此了!
 
接受答案了.
 
后退
顶部