您的位置:首页 > 编程语言 > Delphi

delphi Access 日期字段的查询问题总结

2009-05-07 09:59 399 查看
使用delphi6开发Access数据库,关于日期字段的查询主要的问题就是等于的问题,大于小于都没问题。经过本人的经验得出如下经验:

现在主要介绍万能方法(无论何种方式添加都能查询到):

...

SQL.Add('SELECT R_DATA FROM ROM Where F_NUM =' + ComboBox1.Text + ' AND DateDiff(''s'',R_DATETIME,:1) Between -1 and 1');
Parameters.ParamByName('1').Direction := pdInput;
Parameters.ParamByName('1').DataType := ftDateTime; //ftString;
Parameters.ParamByName('1').Value := StrToDateTime(ComboBox2.Text);

....

SQL语句还有其他的例如:

'SELECT R_DATA FROM ROM Where F_NUM =' + ComboBox1.Text + R_DATETIME = :1'

这时候参数

Parameters.ParamByName('1').Direction := pdInput;
Parameters.ParamByName('1').DataType := ftString;
Parameters.ParamByName('1').Value := DateTimeToStr(StrToDateTime(ComboBox2.Text)); //不知道这里为什么多加个DateTimeToStr否则不好用,这是对于我们数据库中的时间与我们读出来的一致的情况下好用

....

原因:

由于Access数据库添加的时候将毫秒也添加进去了,但是我们查询的时候没有将毫秒算进去因此可能出现记录已经存在但是查询不到的问题!你可以将你数据库中的时间与你读出来的时间进行比较,有的相同,有的大1,有的小1秒。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: