SQL语句查寻问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 11:09:10
代码如下:
qry3.Close;
qry3.SQL.Clear;
qry3.SQL.Add('select * from partsinput where S_J between '+
DateToStr(FirstDate)+' and '+DateToStr(LastDate)+'');
qry3.Open;

这段代码前面还有部份,在前面已将FirstDate和LastDate两个变量赋值,是2009-3-1和2009-3-31.
我使用ShowMessage函数看出语句最终为:select * from partsinput where S_J between 2009-3-1 and 2009-3-31
但以上语句执行后,返回结果为0,实际上数据库里有记录,数据库里字段也是时间格式的,格式为YYYY-M-D
不知什么原因,能告诉我吗?
这里两个日期不能直接用固定的值,必须用变量,因为此查寻是活动的,每个月都要用到

SELECT * FROM partsinput WHERE (S_J BETWEEN '2009-3-1' AND '2009-3-31')

你那样写,变成 2009 - 3 - 1 = 2005了。

对问题补充的答案:
请注意变通,不要等着完完全全的答案。
qry3.SQL.Add('SELECT * FROM partsinput WHERE (S_J BETWEEN \'' +
DateToStr(FirstDate) + '\' AND \'' + DateToStr(LastDate) + '\')');

我不是很了解ACCESS数据库转换成字符型改用什么,是DateToStr么?你既然把LastDate和FirstDate都转换成了字符型而数据库存有的数据又是YYYY-M-D 型的,当然查不到任何数据咯。改成这样试试:
qry3.SQL.Add('select * from partsinput where DateToStr(S_J) between '+
DateToStr(FirstDate)+' and '+DateToStr(LastDate)+'');