SQL 根据身份证号码获取年龄的函数

在数据库的运用过程中,我们时常会碰到根据身份证号码来获取当前的年龄,今天我在这里写了一个函数,就是关于获取年龄的

create or replace function FUNC_COMPARE_SFZHM( sfzhm in varchar2) --输入身份证号码
  return number
  /*
  函数说明,返回值0为小于18岁;值为1是大于75岁;其他情况是返回值为2
  在这个函数里用到了trunc(months_between())
  然后就是将身份证号码里的年月日组合成‘yyyy-mm-dd‘格式,但是在SQL里拼接用的是"||",而不是"+",这个值得注意
  */
is

begin
    if Trunc(MONTHS_BETWEEN(to_date(to_char(sysdate, ‘yyyy-MM-dd‘),‘yyyy-MM-dd‘),to_date(substr(sfzhm,7,4)||‘-‘||substr(sfzhm,11,2)||‘-‘||substr(sfzhm,13,2), ‘yyyy-MM-dd‘)) / 12) < 18  then
      return 0;
    elsif  Trunc(MONTHS_BETWEEN(to_date(to_char(sysdate, ‘yyyy-MM-dd‘),‘yyyy-MM-dd‘),to_date(substr(sfzhm,7,4)||‘-‘||substr(sfzhm,11,2)||‘-‘||substr(sfzhm,13,2), ‘yyyy-MM-dd‘)) / 12) >75 then
    return 1;
    else
      return 2;
    end if;
end;

下面是函数调用的SQL语句:

select func_compare_sfzhm(‘310103200003141234‘) from dual;

原文地址:https://www.cnblogs.com/suyun0702/p/8566278.html

时间: 2024-08-04 19:22:37

SQL 根据身份证号码获取年龄的函数的相关文章

IOS 根据身份证号码获取 年龄 生日 性别

/** 从身份证上获取年龄 18位身份证 */ -(NSString *)getIdentityCardAge:(NSString *)numberStr { NSDateFormatter *formatterTow = [[NSDateFormatter alloc]init]; [formatterTow setDateFormat:@"yyyy-MM-dd"]; NSDate *bsyDate = [formatterTow dateFromString:[self birth

通过身份证号码获取人的年龄和性别

通过身份证号码获取人的年龄和性别:身份证可以识别一个人的信息,下面就介绍一下如何利用js通过身份证号码获取当事人的年龄和性别.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂

JS根据身份证号码算年龄

如果把身份证号码传到页面上,在前端页面获取年龄就需要用到JS脚本了: function GetAge(identityCard) { var len = (identityCard + "").length; if (len == 0) { return 0; } else { if ((len != 15) && (len != 18))//身份证号码只能为15位或18位其它不合法 { return 0; } } var strBirthday = "&qu

根据身份证号码获取身份信息

package com.hshy.util; import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Map; import org.apache.commons.lang.StringUtils; public class IdcardUti

C# 根据身份证号码获取简易信息

public class PackIden { /// <summary> /// 根据身份证获取生日 /// </summary> /// <param name="cardid">身份证</param> /// <param name="res">是否有格式(true1990-01-01,false19900101)</param> /// <returns></retur

根据身份证自动获取年龄/出生日期

<el-form-item label="证件号" prop="idCard"> <el-input v-model="form.idCard" size="small" :disabled="isDisabled" style="width:90%;" @blur="getName(form.idCard)" ></el-input&g

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

getBirthdayFromIdCard : function(idCard) { var birthday = ""; if(idCard != null && idCard != ""){ if(idCard.length == 15){ birthday = "19"+idCard.substr(6,6); } else if(idCard.length == 18){ birthday = idCard.substr(6

php实现身份证号码计算年龄

代码如下 复制代码 <?php function getAgeByID($id){         //过了这年的生日才算多了1周岁         if(empty($id)) return '';         $date=strtotime(substr($id,6,8));//获得出生年月日的时间戳         $today=strtotime('today');//获得今日的时间戳 111cn.net        $diff=floor(($today-$date)/86400

身份证号码合法性判断

问题描述: 我国公民的身份证号码特点如下: 1.长度为18位: 2.第1-17位只能为数字: 3.第18位可以是数字或者小写英文字母x. 4.身份证号码的第7~14位表示持有人生日的年.月.日信息. 例如:511002198808080111或51100219880808011x. 请实现身份证号码合法性判断的函数.除满足以上要求外,需要对持有人生日的年.月.日信息进行校验.年份大于等于1900年,小于等于2100年.需要考虑闰年.大小月的情况.所谓闰年,能被4整除且不能被100整除或能被400