急,急,关于日期查询的问题?(50分)

  • 主题发起人 主题发起人 zhfhq
  • 开始时间 开始时间
Z

zhfhq

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:
我现在有一个问题,我有一个日期Tdatetime的变量NowDate,我现在想用这个变量做一个
查询,我现在有一个Query组件,做以下操作:
Query1.sql.clear;
Query1.sql.add('select * from datebase where idDate=NowDate');
Query1.open;

其中,dateBase数据库表,idDate为字段名,且为日期型, 可总是出现异常,
我知道这中写法是错误的,不知真确的写法是何?
 
你应该这样做:
Query1.sql.clear;
Query1.sql.add('select * from datebase where idDate=’);
Query1.sql.add(Datetostr(nowdate));
Query1.open;

你的错误在于,你用单一号引住了变量NowDate,系统就不能识别出来了
 
Query1.sql.clear;
Query1.sql.add('select * from datebase where idDate='+ FormatDateTime('',NowDate));
^^ 此处填该数据库承认的日期时间格式。
Query1.open;
 
可以这样
Query1.sql.clear;
Query1.sql.add('select * from datebase where idDate=:iddate');
query1.parambyname('iddate').asdatetime:=nowdate;
Query1.open;
 
可以这样写
Query1.close;
Query1.sql.text:=format('select * from datebase where idDate =''%s''',[datetostr(nowdate)]);
或根据不同要求
Query1.sql.text:=format('select * from datebase where idDate like ''%s''',[datetostr(nowdate)]);

Query1.open;

 
You can do as follows:
with query1 do
begin
close;
sql.clear;
sql.add('select * from datebase where idDate= :NowDate');
parambyname('nowdate').asdatatime:=nowdate;
prepare;
open;
end;
 
先别考虑太复杂,最简单的改法
Query1.sql.add('select * from datebase where idDate=''NowDate''');
就OK了,不过一定要保证NowDate表示年那部分的字符串为四位的形式。
 
To: Sayes 错了。
还是按honestman的代码好。
 
这个问题以前讨论过了,我也提过类似的问题,你可以查一下:
with Query1 do
begin
begin
Close;
SQL.clear;
SQL.Add('select * from datebase where idDate= :NowDate');
Params(0).AsDatatime:=nowdate;
prepare;
open;
end;
 
您那样写SQL SERVER将NOWDATE作为函数处理了。
Query1.sql.clear;
//如果nowdate:string;
Query1.sql.add('select * from datebase where idDate='''+nowdate+'''');
Query1.open;
 

Query1.sql.clear;
Query1.sql.add('select * from datebase where idDate="'+datetostr(nowdate)+'"');
Query1.open;
 
多人接受答案了。
 
后退
顶部