select M_Name,M_ZhengJian,M_ZJCode 
    from G_Member 
    where M_ZhengJian = '身份证' 
        and substring(M_ZJCode,len(M_ZJCode)-6,4)=substring(convert(char(8),getdate(),112),5,4)未测试。

解决方案 »

  1.   

    --查询过生日的用户信息:select M_Name,M_ZhengJian,M_ZJCode 
    from G_Member 
    where M_ZhengJian ='身份证' and case Len(M_ZJCode) 
    when 15 then substring(M_ZJCode,9,4)
    when 18 then substring(M_ZJCode,11,4)
    else '' end=right(convert(varchar(8),getdate(),112),4)
      

  2.   

    :(
    写错了,想偷懒才发现18-6<>11。:(
      

  3.   

    --1.
    select * from tablename where day(会员生日字段名)=day(getdate()) and month(会员生日字段名)=month(getdate())
    --2.
    select * from tablename where datepart(day,会员生日字段名)=datepart(day,getdate()) and datepart(month,会员生日字段名)=datepart(month,getdate())
    --3.
    select * from tablename where right(convert(varchar(10),会员生日字段名),8)=right(convert(varchar(10),getdate()),8)
      

  4.   

    --3.
    select * from tablename where right(convert(varchar(10),会员生日字段名),5)=right(convert(varchar(10),getdate()),5)
      

  5.   

    不好意思,仔细看了一下原来是身份证号字段,我的是15为,那个18为的一直仍家里没看过,参见一下left,right,substring,convert联机帮助处理一下,在跟right(convert(varchar(8),getdate(),112),6)相比较
      

  6.   

    谢谢大家的热心帮助!
    我参考zjcxc(邹建)朋友的方法已经成功实现,在此感谢各位。