SQL語句通過身份證號計算年齡


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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM