这样的问题我常碰到,干脆就来求出来,
Select * form Table
if Not DataSet.Isempty then
begin
dataSet.First;
While not DataSet.eof then
begin
if (DataSet.FieldByName('时间').AsDatatime<=#16:00:00# ) and
(DataSet.FieldByName('时间').AsDatatime>=#17:00:00# ) then
showmessage('就显示');
end;
end;
用Parameters来传递起止时间
以下为实例:
aDOquery1.Active:=false;
aDOquery1.SQL.Clear();
aDOquery1.SQL.Add('SELECT * FROM CANDIDCI WHERE SURVDATE >=:begin
DATE AND SURVDATE<=:ENDDATE');
adoquery1.Parameters.Items[0].Value:=EncodeDate(2002,6,1);
adoquery1.Parameters.Items[1].Value:=EncodeDate(2002,7,1);
adoquery1.ExecSQL();
adoquery1.Active:=true;
sql中日期/时间格式受到数据库类型和当前系统设置的日期时间格式的影响,使用Parameters可以避免这些无谓的影响。
不行!!
procedure TCountInfoForm.BitBtn2Click(Sender: TObject);
Var begin
Date,EndDate : String;
Count_SQL : String;
T1,T2 : Integer;
begin
Time,EndTime : String;
begin
If Not (FileNamesQ='') then
begin
BaseDataQuery.Active:=False;
BaseDataQuery.Filtered:=False;
BaseDataQuery.Filter:='日期='''+DateToStr(CxDateEdit1.Date)+'''';
BaseDataQuery.Filtered:=True;
{
begin
Time:='#'+DateToStr(CxDateEdit1.Date)+TimeToStr(CxTimeEdit1.Time)+'#';
EndTime:='#'+DateToStr(CxDateEdit2.Date)+TimeToStr(CxTimeEdit2.Time)+'#';
// EndTime:='#'+TimeToStr(CxTimeEdit2.Time)+'#';
}
Count_SQL:='Select * From ' + FileNamesQ +' Where (日期>=:begin
Time And 日期<=:EndTime)';
BaseDataQuery.Params.Items[0].AsTime:=CxTimeEdit1.Time;
BaseDataQuery.Params.Items[1].AsTime:=CxTimeEdit2.Time;
Edit1.text:=Count_SQL;
BaseDataQuery.SQL.Clear;
BaseDataQuery.SQL.Add(Count_SQL);
BaseDataQuery.Open;
BaseDataQuery.First;
T1:=BaseDataQuery.Fields[5].AsInteger;
BaseDataQuery.Last;
T2:=BaseDataQuery.Fields[5].AsInteger;
T2:=T2-T1;
Label4.Caption:=IntToStr(T2);
End
else
begin
ShowMessage('请选择织网批号再按本按钮查询!');
end;
end;
这是结果:谢谢大家
begin
Time:=TimeToStr(CxTimeEdit1.Time);
EndTime:=TimeToStr(CxTimeEdit2.Time);
BaseDataQuery.SQL.Clear;
Count_SQL:='Select * From ' + FileNamesQ +' Where (日期>='+'#'+DateTostr(CxDateEdit1.Date)+'# And Timevalue(时间)>='+#39+begin
Time+#39+' And Timevalue(时间)<='+#39+EndTime+#39+')';
BaseDataQuery.SQL.Add(Count_SQL);
BaseDataQuery.Open;
正确答案:谢谢大家
begin
Time:=TimeToStr(CxTimeEdit1.Time);
EndTime:=TimeToStr(CxTimeEdit2.Time);
BaseDataQuery.SQL.Clear;
Count_SQL:='Select * From ' + FileNamesQ +' Where (日期>='+'#'+DateTostr(CxDateEdit1.Date)+'# And Timevalue(时间)>='+#39+begin
Time+#39+' And Timevalue(时间)<='+#39+EndTime+#39+')';
BaseDataQuery.SQL.Add(Count_SQL);
BaseDataQuery.Open;