access数据库时间检索(100分)

  • 主题发起人 主题发起人 houxdd
  • 开始时间 开始时间
H

houxdd

Unregistered / Unconfirmed
GUEST, unregistred user!
最近帮朋友单位写一个数据库小程序,要从数据库中检索两个日期之间的左右记录,
我的SQL语句是:adodataset1.commandtext:='select * from table1 where mydate>'+datetostr(date1)+'and mydate<'+datetostr(date2);
现在的问题是:这样的查询语句查询结果总为空(有记录),经反复研究,发现只能使用大于某日的方式,如'mydate >'+datetostr(date1);而不能查询小于某日的
记录,如'mydate <'+datetostr(date1);这样结果总为空,不得其解。这是我在大富翁论坛提的第一个问题,请各位高手不吝赐教。
 
看看access的默认日期表示,年月日顺序对不对?
 
加上#号试试看:
adodataset1.commandtext:='select * from table1 where mydate>#'+datetostr(date1)
+'# and mydate<#'+datetostr(date2)+'#';
我所写的代码中涉及Access的日期时间都要加上#号才能得出正确的结果。
 
你用Query还是ADOQuery?如果是Query,我有一个绝对好用的方法
 
mydate的类型是日期还是字符?
如果是日期,使用HunterTeam的方法;如果是字符,将HunterTeam的方法中的#换为"。
 
'select * from table1 where mydate>:rq1 and mydate<:rq2
然后传参数看看
 
adodataset1.commandtext:='select * from table1 where mydate>#''+FormatDateTime('YYYY-MM-DD',date1)+''# and
mydate<#''+FormatDateTime('YYYY-MM-DD',date2)+''#';

可能情况,你没加#号,它只取了年份,这样小于的时候就变小于那一年的一月一日,
不信,你输一条记录试试看(当然是上一年的)。
 
Format('select * from table1 where mydate>%f and mydate<%f',
[Int(date1),Int(date2)+1])
 
感谢大家的热情支持,根据大家的指教,经试验,我已经将问题解决,谢谢。大富翁论坛真是delphi程序员
的天堂,希望各位高手持之以恒,把delphi发扬光大。再次谢谢大家,分已经为大家送上。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
738
SUNSTONE的Delphi笔记
S
后退
顶部