SQL语句通过身份证号计算年龄

1、截取身份证号上的出生日期

身份证一般为18位数和15位数

18位数身份证的第7-10位数是出生年份,第11-14位数是出生月日,所以18位身份证的年龄计算如下

substring(now(),1,4)-substring(idcard,7,4))-(substring(idcard,11,4)-date_format(now(),'%m%d')>0

15位数身份证的第7-8位数是出生年份,但是少了两位。15位数身份证把1930就简化成30少了前面的19,并且15位身份证全部都在19XX年颁发。 第9-12位数是出生月日,所以15位身份证的年龄计算如下

substring(now(),1,4)-(1900+substring(idcard,7,2)))-(substring(idcard,9,4)-date_format(now(),'%m%d')>0

2、加if判断18位和15位

MySQL的if语法比较像JAVA里的三元表达式

IF(条件,条件为true执行,条件为false执行)

MySQL的字符串长度获取方法

CHAR_LENGTH(字符串)

3、最终的sql语句

select
id,
if (CHAR_LENGTH(idcard)<18,(substring(now(),1,4)-(1900+substring(idcard,7,2)))-(substring(idcard,9,4)-date_format(now(),'%m%d')>0),(substring(now(),1,4)-substring(idcard,7,4))-(substring(idcard,11,4)-date_format(now(),'%m%d')>0)) as age,
idcard
from t_table;

最新文章

  1. 可爱的Python_课后习题_CDay−5 Python 初体验和原始需求
  2. 获取Mac地址
  3. PHP中为位运算符(几乎很少用)
  4. java获得本机IP,名称等
  5. Windows CMD命令大全
  6. openfire及xmpp简单介绍
  7. 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile
  8. Hadoop书籍汇总
  9. shell脚本中的括号和实例
  10. NYOJ-571 整数划分(三)
  11. django-xadmin隐藏菜单不显示
  12. Spring Data Jpa接口简介
  13. go 的匿名函数和闭包
  14. C++ 跨语言调用 Java
  15. 多字节字符集与Unicode字符集
  16. iOS高版本备份恢复到低版本系统的方法
  17. JBOSS 数据源配置并使用JNDI调用
  18. 致Python初学者:Anaconda入门使用指南
  19. shell 13文件包含
  20. 【LOJ】#2291. 「THUSC 2016」补退选

热门文章

  1. layui 时间插件laydate中动态设置改变min和max值
  2. NGK内存将为全球投资者创造新的财富增长机会
  3. 27_MySQL数字函数(重点)
  4. 08_MySQL数据库的字段约束
  5. (十) 数据库查询处理之排序(sorting)
  6. Maven 打包项目到私服 (deploy)
  7. 04.从0实现一个JVM语言系列之语义分析器-Semantic
  8. 八. SpringCloud消息总线
  9. python分离不同后缀名的文件
  10. influxDB安装部署及入门