从MS-Access DATETIME列中选择日期查询

时间:2015-05-23 04:44:43

标签: delphi

我目前正在使用“MS Access”数据库处理“Delphi XE4”。我使用的工具是ADOCommand,ADOQuery,ADOConnection,ADOTable和Datasource

在我的用户界面项目中,用户正在选择日期范围并使用该日期我从数据库中选择记录。

但问题是,在我的数据库列中是DATETIME格式(2015年5月21日下午02:30:00),用户只选择日期,例如,2015年5月21日。

现在我如何才能使用DATE从数据库中选择记录。

请注意,我已尝试触发选择查询,例如

ADOQuery.SQL.ADD('SELECT * From Tablename') ;
ADOQuery.SQL.ADD('WHERE Cast(DateTimeField As DATE) = #5/21/2015# ');

这也是

ADOQuery.SQL.ADD('SELECT * From Tablename') ;
ADOQuery.SQL.ADD('WHERE Convert(DATE,DateTimeField, 101) = #5/21/2015# ');

但这会导致错误“表达式”

中的“未定义函数'转换/转换'

还有其他办法吗?

有人可以建议我如何通过使用选择查询从“DATETIME字段”中提取日期来获取记录吗?

1 个答案:

答案 0 :(得分:1)

欢迎来到SO。

您不应该尝试解析自己应该使用参数化查询的日期。

所以

ADOQuery.SQL.ADD('SELECT * From Tablename') ;
ADOQuery.SQL.ADD('WHERE Convert(DATE,DateTimeField, 101) = #5/21/2015# ');

应改为

ADOQuery.SQL.ADD('SELECT * From Tablename') ;
ADOQuery.SQL.ADD('WHERE DATE = :DateValue');

然后当您调用Query时,执行以下操作:

  ADOQuery1.Close;
  ADOQuery1.Parameters.ParamByName('DateValue').Value := Now;
  ADOQuery1.Open;

SQL引擎为它做了诀窍。尝试一下,如果你不能使它工作,我会为你做一个完整的例子