我认为简单的事实证明是一场噩梦。 。 。 我试图从中获取数据的表非常简单:
R_TYPE (string)
R_PRICE (currency)
S_DATE (date)
E_DATE (date)
我跑:
SELECT *
FROM MYTABLE
WHERE R_TYPE = :a1
AND R_PRICE BETWEEN S_DATE = :a2
AND E_DATE = :a3
参数是:
ABSQuery1.params.ParamByName('a1').asString :=cxTextEdit;
ABSQuery1.params.ParamByName('a2').asDate := DateTimePicker1;
ABSQuery1.params.ParamByName('a3').asDate := DateTimePicker2;
但它不会工作....任何想法?
答案 0 :(得分:1)
您的查询混乱:价格不能介于日期比较的布尔结果之间。
如果日期选择器在选择的日期之间挑选任何整个持续时间(即它开始和结束)的价格,请使用:
select * from MYTABLE where R_TYPE = :a1 and S_DATE > :a2 AND E_DATE < :a3;
如果日期选择器选择了所选日期之间某段时间的任何价格(即所选日期范围和价格的日期范围至少有一些重叠),请使用:< / p>
select * from MYTABLE where R_TYPE = :a1 and S_DATE < :a3 AND E_DATE > :a2;