将起始两个给定时间之间的数据检索出来 ( 积分: 100 )

  • 主题发起人 主题发起人 gaojun89757
  • 开始时间 开始时间
G

gaojun89757

Unregistered / Unconfirmed
GUEST, unregistred user!
用表过滤的方法可以,用query中SQL语句检索老是出错,请帮忙看一下什么问题?
selldate是DATE型的field,表过滤方法的语句如下:
if (table1.FieldByName('selldate').AsDateTime >= DateTimePicker1.Date) and
(table1.FieldByName('selldate').AsDateTime <= DateTimePicker2.Date)
then accept:=true
else accept:=false;
 
select * from Table where FieldName between 25 and 30
用这个应该行吧!比你那个要好。
between ...... and 就是检索区间的SQL关键词。
 
有两个时间变量,我按下面的代码写,查不出来记录:

query1.Close ;
query1.SQL.Clear;
query1.sql.text :='select * from sellrecorder where (selldate >:rq1) and (selldate <:rq2)';
query1.parambyname('rq1').asdatetime :=DateTimePicker1.Date ;
query1.parambyname('rq2').asdatetime :=DateTimePicker1.Date ;
query1.open;
 
如果是sql 2000,你这样
query1.Close ;
query1.SQL.Clear;
query1.sql.text :='select * from sellrecorder where (selldate >'''+formatdatetime('yyyy-mm-dd',DateTimePicker1.Date )+''') and (selldate <'''+formatdatetime('yyyy-mm-dd',DateTimePicker2.Date )+''')';
如果是access,你这样
query1.Close ;
query1.SQL.Clear;
query1.sql.text :='select * from sellrecorder where (selldate >#'+formatdatetime('yyyy-mm-dd',DateTimePicker1.Date )+'#) and (selldate <#'+formatdatetime('yyyy-mm-dd',DateTimePicker2.Date )+'#)';
 
看你时间原来是什么类型的,如果Mysql下你看看是不是会转化成时间撮

按照正常的SQL语句 select * from T where date > @Begin and date< @End 是可以的
或者你按照楼上的使用between语句 区别就是> 和 >= 的关系
 
二楼应该能解决问题了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部