数据库里有出生日期,有二个条件,首先,判断出男方年龄达到60岁,女方达到55岁月和现在时间比,第二,出生日期提前3个月,然后显示出符合这个月(本月)的人员名单

解决方案 »

  1.   

    select * from tab where (性别='男' and 出生日期<=dateadd(year,-60,getdate())
    or 性别='女' and 出生日期<=dateadd(year,-55,getdate()))
    and (性别='男' and 出生日期>=dateadd(month,-3,dateadd(year,-60,getdate()))
    or 性别='女' and 出生日期<=dateadd(month,-3,dateadd(year,-55,getdate())))
    )
      

  2.   

    创建示例:
    declare @t table(出生日期 smalldatetime,性别 varchar(4))
    insert @t select '1938-10-20 11:20:35','男'
    union all
    select '1938-10-20 11:20:35','女'
    union all
    select '1948-05-01 11:20:35','男'
    union all
    select '1950-10-20 11:20:35','女'
    使用以下查询语句:将年和月全部转换成月度值比较 即60*12再提前三月16*12-3=717,这样就满足了在指定月度内而不明细到具体到天.
    select * from @t where ((datediff(month,出生日期,getdate())=717 and 性别='男') or (datediff(month,出生日期,getdate())=657 and 性别='女'))返回结果
    出生日期                   性别
    1948-05-01 11:21:00 男以上不知是否符合需求.