SELECT * FROM 表 WHERE  (
CASE LEN(身份证号) WHEN 15 THEN  '19'+SUBSTRING(身份证号,7,6) 
               WHEN 18 THEN  SUBSTRING(身份证号,7,8) 
               ELSE '30001231' END)<CONVERT(CHAR(8),GETDATE(),112)

解决方案 »

  1.   

    你是不是想把身份证号中的月日提取出来,与当前日期的月日相比较.如果是可以这样做:---建立测试环境:create table a (id varchar(4),sfzh varchar(100))--
    insert a select '001','229005740812102'
    union all select '002','220004730701101'找出身份证号中月日小于当前日期的记录.select * from a  where convert(int,substring(sfzh,9,4))<convert(int,substring(convert(varchar,getdate(),112),5,4))
      

  2.   

    谢谢大家,顺便补充
    convert(int,substring(convert(varchar,getdate(),112),1,8))
    里面应该1,8这样出来的日期就是20050101类型的数据,然后SFZH,7,8也是出来全部格式的再次感谢,开始发分