根据输入的出生年月日;
比如;20111231
根据身份证号码字段查询对应为这个时间的数据?该如何做呢?

解决方案 »

  1.   

    mysql的substring函数  可以截取字符串或者 like '%……%'匹配也可以将信息入库的时候,单独一个字段保存,冗余,牺牲空间换速度
      

  2.   

    身份证是有特征的 二代 xxxxx219  一代没有 219 也没有 21xxx 年出生的人 很容易判断.
      

  3.   

    $birthday=strlen(birthdaystart)==15 ? ('19' . substr(birthdaystart, 6, 6)) : substr(birthdaystart, 6, 8);
      

  4.   

    你的 身份证 字段是什么类型的?
    如果是 varchar 则用 LENGTH()
    如果是 char 则用 LENGTH(TRIM())
    取字串 SUBSTRING用法与 php 的相应函数一样
      

  5.   

    select * from tablename where (right(left(`IDCardNum`,14),8)>=19881123 and right(left(`IDCardNum`,14),8)<=20111229 and LENGTH(`IDCardNum`)=18) OR (RIGHT(LEFT(`IDCardNum`,12),6)>=19881123 and RIGHT(LEFT(`IDCardNum`,12),6)<=20111229 and LENGTH(`IDCardNum`)=15)
      

  6.   

    设 $Birthday 为传入的生日... where
    (LENGTH(`IDCardNum`)=15 and susbstring(IDCardNum, 6,6)=right('$Birthday',6))
    or
    (LENGTH(`IDCardNum`)=18 and susbstring(IDCardNum, 6,8)='$Birthday')
      

  7.   

    select * from tablename where (right(left(`IDCardNum`,14),8)>=19881123 and right(left(`IDCardNum`,14),8)<=20111229 and LENGTH(`IDCardNum`)=18) OR (RIGHT(LEFT(`IDCardNum`,12),6)>=19881123 and RIGHT(LEFT(`IDCardNum`,12),6)<=20111229 and LENGTH(`IDCardNum`)=15)