前言
SQL开发过程中,有时候会遇到需要筛选年龄范围,但只有身份证号码的情况,这种情况如何筛选,经过实践整理了一下两种方式。
一、年龄比较
计算出身份证好对应的年龄,再进行比较。主要函数age(timestamptz,timestamptz)用于计算年龄(26 years 10 months 9 days),date_part(text,text)用于获取age函数返回的年龄(26),to_date(text,text)用于转换字符串为时间
代码如下(示例):
select date_part('year',age(CURRENT_DATE,to_date(substr(身份证号码,7,8),'yyyyMMdd'))) between 10 and 20;
二、出生日期比较
计算需要筛选的年龄范围对应的出生日期范围,例:如需筛选20-40岁的信息,计算出生日期范围是1982-01-06 -----2000-01-06
代码如下(示例):
select to_date(substr(身份证号码,7,8),'yyyyMMdd') between '1980-01-06' and '2000-01-06';