sql.Add('select * from Nation where convert(varchar(10),Born_Date,120) born_date between ''''+'1998-05-19'+''''+' and '+''''+'1992-05-19'+'''');
begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('Select * from Nation where Born_Date between :ADate and :BDate'); Query1.Params[0].AsDate = StrToInt('1998-5-19'); Query1.Params[1].AsDate = StrToInt('1992-5-19'); Query1.Prepare; Query1.Open; end;
你可以试试以下的代码(数据库不一样使用的日期格式也不一样)var SQLText:String; begin Query1.Close; Query1.SQL.Clear; //如果数据库为SQLServer SQLText:=Format('Select * From Nation where (Born_Date>=''%s'') '+ ' AND (Born_Date<=''%s'') ',['1992-5-19','1998-5-19']); //如果数据库为Accesss SQLText:=Format('Select * From Nation where (Born_Date>=#%s#) '+ ' AND (Born_Date<=#%s#)',['1992-5-19','1998-5-19']); Query1.SQL.Add(SQLText); Query1.Prepare; Query1.Open; end;
Between A and B A必须小于B,否则就查询不出来 你应该写成这样 between 1992-5-19 and 1998-5-19');
colacoca(我是一瓶倒过来的可口可乐) 朋友: 你所说的方法也试过的,找了来还是为空,我真不知道是哪儿出了问题。 with query1 do begin close; sql.Clear; sql.Add('select Born_Date,sex from Nation where Born_Date between 1980-01-01 and 2000-12-31 GROUP BY Born_Date,sex'); open; end;
不会是DBGrid之类的DateSource属性没有吧
楼上有人说的对,数据库不同,那么采用的SQL会有所差别的,如果是ORACLE,那么应该使用TO_DATE转化 ex:csSQL := 'select * from Nation where Born_Date between TO_DATE(''1998-5-19'')and TO_DATE(''1992-5-19'')';
楼上的朋友是这样吧 csSQL := 'select * from Nation where Born_Date between TO_DATE(''''1998-5-19'''')and TO_DATE(''''1992-5-19'''')';
首先看你的日期格式是什么样子的 query1.close; query1;sql.clear; query1.SQL.Add('Select * from Nation where Born_Date between :ADate and :BDate'); query1.Params[0].value:=strtodate('1992-5-19'); query1.Params[2].value:=strtodate('1998-5-19'); query1.open;
我用的access数据库,就是无论怎么查询,都是为空的。
select * from [客户服务信息] where [服务时间] between #1992-5-19# and #1998-5-19#
试一试: select * from Nation where Born_Date >'12/05/2002' and Born_Date <='16/05/2002'
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select * from Nation where Born_Date between :ADate and :BDate');
Query1.Params[0].AsDate = StrToInt('1998-5-19');
Query1.Params[1].AsDate = StrToInt('1992-5-19');
Query1.Prepare;
Query1.Open;
end;
SQLText:String;
begin
Query1.Close;
Query1.SQL.Clear;
//如果数据库为SQLServer
SQLText:=Format('Select * From Nation where (Born_Date>=''%s'') '+
' AND (Born_Date<=''%s'') ',['1992-5-19','1998-5-19']);
//如果数据库为Accesss
SQLText:=Format('Select * From Nation where (Born_Date>=#%s#) '+
' AND (Born_Date<=#%s#)',['1992-5-19','1998-5-19']);
Query1.SQL.Add(SQLText);
Query1.Prepare;
Query1.Open;
end;
A必须小于B,否则就查询不出来
你应该写成这样
between 1992-5-19 and 1998-5-19');
你所说的方法也试过的,找了来还是为空,我真不知道是哪儿出了问题。
with query1 do
begin
close; sql.Clear;
sql.Add('select Born_Date,sex from Nation where Born_Date between 1980-01-01 and 2000-12-31 GROUP BY Born_Date,sex');
open;
end;
ex:csSQL := 'select * from Nation where Born_Date between TO_DATE(''1998-5-19'')and TO_DATE(''1992-5-19'')';
csSQL := 'select * from Nation where Born_Date between TO_DATE(''''1998-5-19'''')and TO_DATE(''''1992-5-19'''')';
query1.close;
query1;sql.clear;
query1.SQL.Add('Select * from Nation where Born_Date between :ADate and :BDate');
query1.Params[0].value:=strtodate('1992-5-19');
query1.Params[2].value:=strtodate('1998-5-19');
query1.open;
where [服务时间] between #1992-5-19# and #1998-5-19#
select * from Nation where Born_Date >'12/05/2002' and Born_Date <='16/05/2002'