数据库中 日期比较(20分)

  • 主题发起人 主题发起人 muyixin
  • 开始时间 开始时间
M

muyixin

Unregistered / Unconfirmed
GUEST, unregistred user!
我用access数据库 中有一张表
两个字段 name(文本型) date(日期型yyyy-mm-dd)
我想用adoQuery 做一个查询
with ADOquery do
begin

//把程序表 按照程序编号排序
Close;
SQL.Clear;
S:='Select *from table where name='+'"'+Edit1.Text+'"';
SQL.Add(S);
Prepared:=True;
Open;
end;
这样可以查询出在edit1中输入的 姓名 的记录 ( 在aql中 字符要用单引号 或 双引号) 那我想查询datetimepicker 中的日期的记录 S该怎么赋值啊??
S:='Select *from table where date='+??????;
 
和上面的写法应该一样吧
 
可以把时间赋给一个时间变量Datetime:DateTime
Select * from table where Date=datetime
 
S:='Select *from table where date='+'"'+atetimepicker.Date+'"';
楼上是说这样写么
我试过的 这样的话 数据库中date是日期型的 而 用双引号的是字符型的 这样能比较么?
 
你在查询分析器写日期型不是也用单引号吗
 
select * from table where Date=:a
params.parambyName('a').value:=Format('yyyy-mm-dd',DateTime);
 
用between and
 
with ADOquery do
begin

//把程序表 按照程序编号排序
Close;
SQL.Clear;
S:='Select *from table where date=2006-09-01';
SQL.Add(S);
Prepared:=True;
Open;
end;
我这样试了 都查不到数据库中日期为2006-09-01的记录
 
字段date是什么数据类型的啊
 
close;
sql.clear;
sql.add('select * from table date=:a');
params.paramByName('a').value:=FormatDateTime('yyyy-mm-dd',DateTime);
Open;
 
我自己在access中做了个查询 在看了一下他的SQL语句 原来发现 其日期是写在两个#号之间的.
所以这样写是可以的
S:='Select *from table where date=#2006-09-01#';
执行SQL是可以查询到2006-09-01这条记录的
 
S:='Select *from table where date= #'+datetostr(datetimepicker.Date)+'# ';
 
接受答案了.
 
后退
顶部