在日期选择中从数据库加载数据

时间:2012-08-06 00:28:34

标签: delphi-xe2 delphi-xe

我正在尝试使用dbplannercalender1加载数据库数据。

procedure TForm1.DBPlannerCalendar1DaySelect(Sender: TObject;
  SelDate: TDateTime);
begin
with absQuery2 do
begin
  absQuery2.Close;
  absQuery2.sql.Clear;
  ABSQuery2.SQL.Text:='select * from log where date = :a1';
  ABSQUERY2.PARAMS.ParamByName('a1').value:= DBPlannerCalendar1.Date;
  ABSQuery2.ExecSQL;
end;
end;

我收到错误“预期日期字符串”YYYY-MM-DD“,但在第1行找到”=“...... 我做错了什么?

2 个答案:

答案 0 :(得分:1)

使用trunced值 adoQuery.Parameters.paramByName('DataDal')。value:= trunc(edDate.Date);

答案 1 :(得分:0)

使用AsDateTime代替Value,让驱动程序将其转换为正确的格式:

AbsQuery2.Params.ParamByName('a1').AsDateTime := DBPlannerCalendar1.Date;

如果由于某种原因绝对不支持AsDateTime,请自行格式化日期:

AbsQuery2.Params.ParamByName('a1').Value := 
    FormatDateTime('yyyy-mm-dd`, DBPlannerCalendar1.Date);

第一种方法是最好的选择,因为它在数据库引擎之间更加便携(它适用于所有这些方法,因为驱动程序将格式化为适当的日期安排)。使用第二个意味着如果数据库需要不同于YYYY-MM-DD的内容,则必须在使用日期的任何地方更改代码。