读书人

在人员表中查找符合生日范围的有关问题

发布时间: 2012-03-18 13:55:38 作者: rapoo

在人员表中查找符合生日范围的问题 用的是SQL SEVER

s1:= 'select * from 人员表 where (( (datepart(mm,出生日期)=:aa)and(datepart(dd,出生日期)> =:bb)) or(datepart(mm,出生日期)> :aa) ) and (( (datepart(mm,出生日期)=:cc)and(datepart(dd,出生日期) <=:dd)) or(datepart(mm,出生日期) <:cc) ) ';

adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(s1);
adoquery1.Parameters.ParamByName( 'aa ').Value :=a1;
adoquery1.Parameters.ParamByName( 'bb ').Value :=a2;
adoquery1.Parameters.ParamByName( 'cc ').Value :=a3;
adoquery1.Parameters.ParamByName( 'dd ').Value :=a4;

adoquery1.Open ;


以上是本人写的程序,要求是查找符合a1月a2日到a3月a4日之间的生日的人员。
编辑无错,但是显示出来的却只有A1当月A2日以后的生日。大于A1月的却查不到。
好象OR以后的语句没有起到作用。
希望各位大哥帮帮忙啦,俺在这里先谢谢了。

[解决办法]
先在查询分析器里面调试一下sql语句
[解决办法]
s1:= 'select * from 人员表 where (DATEPART(mm, 出生日期) * 100 + DATEPART(dd, 出生日期) > = :aa * 100 + :bb) AND (DATEPART(mm, 出生日期) * 100 + DATEPART(dd, 出生日期) <= :cc * 100 + :dd) ';

adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(s1);
adoquery1.Parameters.ParamByName( 'aa ').Value :=a1;
adoquery1.Parameters.ParamByName( 'bb ').Value :=a2;
adoquery1.Parameters.ParamByName( 'cc ').Value :=a3;
adoquery1.Parameters.ParamByName( 'dd ').Value :=a4;

adoquery1.Open ;

读书人网 >.NET

热点推荐