急。急。急。有关ACESS数据库,如何将日期+时间做为WHERE的查询条件!格式应该怎么写。(delphi7.0)(30分)

  • 主题发起人 主题发起人 rpg-net
  • 开始时间 开始时间
只做过时间以天计算的。。
 
procedure TYG_JB_Form.SAVE_BitBtnClick(Sender: TObject);
var
sqlstr: string;
begdate: string;
enddate: string;
begin
begdate := FormatDateTime('yyyy-mm-dd', DateTimePicker.datetime)+''+
FormatDateTime('hh:mm:ss', DateTimePicker1.DateTime);
enddate := FormatDateTime('yyyy-mm-dd', DateTimePicker.datetime)+''+
FormatDateTime('hh:mm:ss', DateTimePicker2.DateTime);
try
with ADOQuery1 do
begin
Close;
SQL.Clear;
sqlstr := ' select sum(costmoney)from blacklog where beginTM>=#' + begdate + '# and endTM<=#' + enddate + '#group by costmoney';
SQL.Add(sqlstr);
open;

end;

except

end;


end;
 
TO japhe,
通过是通过了,不知道你查询的格式是YYYY-MM-DD HH:MM:SS 形式的吗??我怎么样能够解析出来SQL语句,我想到ACESS数据库里边去试一下SQL语句。。
 
查询语句与时间格式无关的。按上面的方面没办法解析SQL语句
 
to japhe,
这样太费劲了你有QQ吗?告诉我我们好好沟通沟通。。可以吗?
 
QQ:298451179
MSN:Japhe_12@HotMail.com
E-Mail:Japhe@126.com
上班时间不能聊天
 
to japhe 我加你了。。你的程序我测试了一下有点问题。。你看我家了一句话就不对了。。

procedure TYG_JB_Form.SAVE_BitBtnClick(Sender: TObject);
var
sqlstr: string;
DTBegin, DTEnd: TDateTime;
begin
DTBegin := Int(Start_DateTimePicker.Date) + Frac(DateTimePicker1.Time);
DTEnd := Int(Stop_DateTimePicker.Date) + Frac(DateTimePicker2.Time);
sqlstr := ' select sum(costmoney)as ss from blacklog where beginTM >= :DTBegin and endTM <= :DTEnd';
with ADOQuery1 do
try
Close;
SQL.Text := sqlstr;
Parameters.ParamByName('DTBegin').Value := DTBegin;
Parameters.ParamByName('DTEnd').Value := DTEnd;
open;
Edit1.Text :=Fieldbyname('ss').AsString;{这句话是我加的我把总和给EDIT但是总和求出来不对啊,你那边不是有我数据库吗你查一下看看。。数据不正确。。}
except
ShowMessage('异常');
end;
ShowMessage('成功');
end;
 
我给你改了一下:

procedure TYG_JB_Form.SAVE_BitBtnClick(Sender: TObject);
var
sqlstr: string;
sdate1: string;
sdate2: string;
sdate3: string;
sdate4: string;
begdate: TDateTime;
enddate: TDateTime;
//s :string;
begin

sdate1 :=dateToString(Start_DateTimePicker.DateTime);
sdate2 := FormatDateTime('hh:mm:ss', DateTimePicker1.DateTime);

sdate3 := dateToString(Stop_DateTimePicker.DateTime);
sdate4 := FormatDateTime('hh:mm:ss', DateTimePicker2.DateTime);

//begdate := date1 + date2;
//ShowMessage(datetimetostr(begdate));

//enddate := date3 + date4;
//ShowMessage(datetimetostr(enddate));
try
with ADOQuery1 do
begin
Close;
SQL.Clear;
sqlstr := '';

sqlstr := ' select sum(costmoney) from blacklog where beginTM>=datevalue('+
QuotedStr(sdate1)+'+timevalue('+QuotedStr(sdate2) +
' and endTM<=datevalue('+QuotedStr(sdate3)+')+timevalue('+QuotedStr(sdate4)
+') group by costmoney';

SQL.Add(sqlstr);
open;

end;

except

end;


end;

注:日期时间类型本质上是浮点类型,日期部分是整数部分,时间部分是小数部分
datevalue(日期的文本串) 取日期时间的日期部分,返回数值型(整数部分)
timevalue(时间的文本串) 取日期时间的时间部分,返回数值型(小数部分)

两者相加即为该日期时间的准确表达。
 
怎么还不结贴???
 
后退
顶部