通过身份证号获取出生的年月日

/**
 * ^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$
正则表达式没有校验月份和日期的真实性(比如2月不会有30或31日),也没有校验身份证号码的校验位是否正确
 * @param id    身份证号
 * @return    生日(yyyy-MM-dd)
 */
public String extractYearMonthDayOfIdCard(String id) {
    String year = null;
    String month = null;
    String day = null;
     //正则匹配身份证号是否是正确的,15位或者17位数字+数字/x/X
    if (id.matches("^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$
")) {
        year = id.substring(6, 10);
        month = id.substring(10,12);
        day = id.substring(12,14);
    }else {
        System.out.println("身份证号码不匹配!");
        return null;
    }
    return year + "-" + month + "-" + day;
}
通过身份证号出生年月的方法可以使用Oracle SQL中的SUBSTR()函数和TO_DATE()函数来实现,具体步骤如下: 1. SUBSTR()函数可以截取身份证号中的出生年月日部分,具体格式为:SUBSTR(str, start_pos, length)。其中str为身份证号,start_pos为开始截取的位置,length为要截取的长度。根据身份证号码的规律,出生年月日部分的起始位置是第7位,长度为8位。所以可以使用以下语句获取出生年月日部分: SUBSTR(身份证号, 7, 8) 2. TO_DATE()函数可以将字符串类型的日期转换成日期类型,具体格式为:TO_DATE(str, format)。其中str为要转换的字符串,format为字符串的格式。根据身份证号码的规律,出生年月日部分的格式为yyyyMMdd。所以可以使用以下语句将字符串类型的出生年月日转换成日期类型: TO_DATE(SUBSTR(身份证号, 7, 8), 'yyyyMMdd') 3. 最后将日期类型转换成需要的格式,可以使用TO_CHAR()函数,具体格式为:TO_CHAR(date, format)。其中date为要转换的日期,format为日期的格式。例如,将日期转换成yyyy-mm-dd格式可以使用以下语句: TO_CHAR(TO_DATE(SUBSTR(身份证号, 7, 8), 'yyyyMMdd'), 'yyyy-mm-dd') 如果您需要在Oracle SQL中查询某个人的出生年月,可以使用类似以下的SQL语句: SELECT TO_CHAR(TO_DATE(SUBSTR(身份证号, 7, 8), 'yyyyMMdd'), 'yyyy-mm-dd') AS 出生年月 FROM 表名 WHERE 身份证号 = 'xxxxxxxxxxxxxxxxx';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讓丄帝愛伱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值