sql日期与参数之间

时间:2011-06-09 01:26:56

标签: sql delphi delphi-xe

我认为简单的事实证明是一场噩梦。 。 。 我试图从中获取数据的表非常简单:

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;

但它不会工作....任何想法?

1 个答案:

答案 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;