我目前正在使用“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字段”中提取日期来获取记录吗?
答案 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引擎为它做了诀窍。尝试一下,如果你不能使它工作,我会为你做一个完整的例子