AdoQuery.Filter与日期

时间:2016-03-14 12:57:37

标签: sql date delphi ms-access

所以,我有一个查询:"Select * FROM Payments WHERE Day([PayDate])=Day(Date()) AND Month([PayDate])=Month(Date())"

我想知道如何在ADOQuery的ADOQuery.Filter属性中执行此操作。

我知道你可以使用“Ands”来放置多个条件,但我没有得到Month(Date())Day(Date())的内容。 我正在使用Access数据库btw。

1 个答案:

答案 0 :(得分:1)

ADOQuery.Filter与SQL“WHERE”子句不同。

在使用它们之前,您需要在SQL中计算函数。

尝试这样做:

ADOQuery.SQL.Text := 'SELECT *, Day([PayDate]) AS d, Month([PayDate]) AS m FROM Payments';

然后在ADOQuery.Filter中使用“d”和“m”字段

uses DateUtils;

procedure FilterQuery;
var
  D: TDateTime;
begin
  D := Now;

  ADOQuery.Filtered := False;
  ADOQuery.Filter := Format('d = %u AND m = %u', [DayOf(D), MonthOf(D)]);
  ADOQuery.Filtered := True;
end;