首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-18 
在人员表中查找符合生日范围的问题 用的是SQL SEVERs1: select*from人员表where(((datepart(mm,出生日期)

在人员表中查找符合生日范围的问题 用的是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 ;

热点排行