我正在尝试使用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行找到”=“...... 我做错了什么?
答案 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
的内容,则必须在使用日期的任何地方更改代码。