如何查找表中的日期(100分)

  • 主题发起人 主题发起人 runcow
  • 开始时间 开始时间
R

runcow

Unregistered / Unconfirmed
GUEST, unregistred user!
表 a.db 中字段为a_2,类型为D
我要找 a_2中满足某一时间段的记录。起始时间和末尾时间是变量,用query控件,
我写了如下语句:
query1.close;
query1.sql.clear;
query1.add(hhhh);
query1.active:=true;
但我不会写hhhh中的东西。
 
老大,提问之前先查查已答问题好吗?
http://www.delphibbs.com/delphibbs/dispq.asp?lid=598042
http://www.delphibbs.com/delphibbs/dispq.asp?lid=541990
http://www.delphibbs.com/delphibbs/dispq.asp?lid=615020
http://www.delphibbs.com/delphibbs/dispq.asp?lid=480481
http://www.delphibbs.com/delphibbs/dispq.asp?lid=454668
http://www.delphibbs.com/delphibbs/dispq.asp?lid=253704
http://www.delphibbs.com/delphibbs/dispq.asp?lid=111318
都是!
 
一看就是一个新手,连query1.SQL.add(hhhh);都会写错,不过可以原谅,毕竟谁也不是
天生高手,杜宝说的对,以后再提问前,先搜索一下,免得花冤枉钱。
 
query1.add('select * from a where a_2 between :rq1 and :rq2');
query1.ParamByName('rq1').AsDateTime := 开始日期;
query1.parambyname('rq2').AsDateTime := 结束日期;

[:D][8D]
 
To 鼠标:
為什么不直接并起來﹐不用設參數傳遞了

我看他是不會SQL語句吧
 
query1.close;
query1.sql.text:='select * from a where a_2 between '''+date1+''' and '''+date2+''''
query1.open;
 
sql.add('select * from a where a_2>='''+datetostr(date1)+''' and a_2<='''+datetostr(date2)+'''');
这样也可以
在sqlserver中通过
 
使用参数而不直接拼凑起来
是有好处的
1、select * from a where a_2 between :rq1 and :rq2
SQL语句清楚直观,特别是参数比较多的情况下
2、可以有效的解决数据类型问题
如果数据库中使用的日期格式和你程序中使用的不一致,直接拼凑就会有问题,使用参数
底层会帮你处理好
3、可以不用考虑数据库对参数的包装是使用单引号(')还是双引号(")
4、对于参数是字符串的时候,如果里面有单引号(')或者双引号("),直接拼凑出来的SQL语句就有问题了

 
还是直接并起来好,这样在运行时可以看到你的sql语句是否有问题
sqlstr:='select * from a where a_2 between '''+date1+''' and '''+date2+'''';
sql.add(sqlstr);
 
ms sql 中日期时间格式为:yyyymmdd hh:nn:ss
例:
add(FormatDateTime('yyyymmdd hh:nn:ss', Date1));
 
接受答案了.
 
后退
顶部