我这边有一个业务,需要客户填写身份证号,自动计算他的出生日期和年龄

在sql中,具体的存储过程实现是这样的:

/***********************************************
根据身份证号计算出生日期和年龄
Date:2017-10-15
Author:xzl
条件:身份证号码
返回:出生日期和年龄
***********************************************/
/***
*根据身份证号计算出生日期和年龄
***/
create proc [dbo].[sp_GetBirthDate_Age]
@IDCard varchar(20),
@BirthDate varchar(20) output,
@Age int output
as
begin
--声明变量--
declare @BirthDateStr varchar(10)
declare @YearStr varchar(10)
declare @MonthStr varchar(10)
declare @DayStr varchar(10)
declare @NowDateStr varchar(20)
declare @AgeStr varchar(10) ----1、根据身份证号,计算出生日期---
--设置IDCard值
--set @IDCard ='445182199403123781'
--1)获取身份证号中年月日部分(返回:19940312)--
set @BirthDateStr = SUBSTRING(@IDCard,7,8)
--2)将获取年月日字符串转化为对应日期格式--
--2.1)获取年部分--
set @YearStr = SUBSTRING(@BirthDateStr,1,4)
--2.2)获取月部分--
set @MonthStr = SUBSTRING(@BirthDateStr,5,2)
--2.3)获取日部分--
set @DayStr = SUBSTRING(@BirthDateStr,7,2)
--3)返回组合后的日期---
set @BirthDate = @YearStr +'-'+@MonthStr+'-'+@DayStr --2、根据出生日期和当前日期,计算年龄--
--1)获取当前时间的日期部分(返回:2017-10-15)--
set @NowDateStr = CONVERT(varchar(10),GETDATE(),23)
--2)获取当前日期与出生日期的年份(年龄) 返回:23岁 --
set @AgeStr = DATEDIFF(YEAR,@BirthDate,@NowDateStr)
--3)判断当前日期与出生日期(是否过生日,未过生日减去1岁)--
if(SUBSTRING(@BirthDate,6,5) <= SUBSTRING(@NowDateStr,6,5))
begin
--Cast()将字符转化为数字函数
set @Age = CAST(@AgeStr as int)
end
else
begin
set @Age = CAST(@AgeStr as int)-1
end
--输出计算后的返回结果--
select @BirthDate as 出生日期,@Age as 年龄
end

在sql中,执行上面可在可编程性-->存储过程中看到创建的存储过程

存储过程的调用:

--测试1:出生日期已过当前日期的---
declare @IDCard varchar(20)
declare @BirthDate varchar(20)
declare @Age int
set @IDCard=''
exec sp_GetBirthDate_Age @IDCard,@BirthDate output,@Age output
--返回结果--
--出生日期:1994-10-10 年龄: 23
--测试2:出生日期未过当前日期的---
declare @IDCard varchar(20)
declare @BirthDate varchar(20)
declare @Age int
set @IDCard=''
exec sp_GetBirthDate_Age @IDCard,@BirthDate output,@Age output
--返回结果--
--出生日期:1994-10-18 年龄: 22

调用后结果:

aaarticlea/png;base64,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" alt="" />

sql server 根据身份证号计算出生日期和年龄的存储过程的更多相关文章

  1. js中如何通过身份证号计算出生日期和年龄

    在html中有如下标签 身份证号:<input type="text" id="Gra_IDCard" onChange="IDCardChan ...

  2. oracle 根据身份证号计算出生日期

      1.情景展示 如何根据身份证号推算出出生日期? 2.解决方案 --根据身份证号计算出生日期 SELECT DECODE(LENGTH(ID_CARD), 18, SUBSTR(ID_CARD, 7 ...

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

    SQL语句通过身份证号计算年龄 1.截取身份证号上的出生日期 身份证一般为18位数和15位数 18位数身份证的第7-10位数是出生年份,第11-14位数是出生月日,所以18位身份证的年龄计算如下 su ...

  4. JavaScript 通过身份证号获取出生日期、年龄、性别 、籍贯

    JavaScript 通过身份证号获取出生日期.年龄.性别 .籍贯(很全) 效果图: 示例代码: //由于没有写外部JS,所以代码比较长!!! <!DOCTYPE html PUBLIC &qu ...

  5. 教你一招:根据身份证号计算出生年月和年龄 text函数和mid函数混用 datedif函数和today函数混用

    在电子表格Excel中,使用text函数和mid函数混用,根据身份证号计算出生年月: =text(mid(A2,,),"0!/00!/00") #0!/00!/00 为日期的格式# ...

  6. SQL 从身份证号得到出生日期、年龄、男女

    ), CONVERT(smalldatetime, SUBSTRING(b.IDCard, , )), ) AS BrithDate_Name, DATEDIFF(year, CONVERT(smal ...

  7. sqlalchemy 模型中添加根据身份证号计算性别和年龄

    class Users(Base, BaseMixin): username = Column(String(24)) id_Num = Column(String(18) ) # 身份证号码 @pr ...

  8. Microsoft SQL Server 数据库 错误号大全

    panchzh :Microsoft SQL Server 数据库 错误号大全0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒 ...

  9. Javascript 身份证号获得出生日期、获得性别、检查身份证号码

    //---------------------------------------------------------- // 功能:根据身份证号获得出生日期 // 参数:身份证号 psidno // ...

随机推荐

  1. JAVA关于泛型的笔记

    1.Java SE 5.0中增加泛型机制的主要原因是为了满足在1999年制定的最早的Java规范需求之一(JSR 14). 2.使用泛型机制编写的程序代码要比那些杂乱的使用Object变量,然后再进行 ...

  2. L1-048. 矩阵A乘以B

    水题不多说,直接上代码:#include<stdio.h> using namespace std; int main() { ][]; ][]; int m,n; int x,y; sc ...

  3. 学习笔记31—endnote设置

    修改文献引用设置: JournalArticle: Author. (Year). Title. [Translated Title]. [Reviewed Item]. Journal|, Volu ...

  4. 约瑟夫环(Joseph)的高级版(面向事件及“伪链表””)

    约瑟夫环问题: 在一间房间总共有n个人(下标0-n-1),只能有最后一个人活命. 按照如下规则去杀人: 所有人围成一圈 顺时针报数,每次报到q的人将被杀掉 被杀掉的人将从房间内被移走 然后从被杀掉的下 ...

  5. Cocos Creator 脚本模板

    1.由于新建Cocos Creator脚本带有很多注释,并且有时候需要增加定制的默认注释,所以需要修改脚本生成模板. 2.在CocosCreator\resources\static\template ...

  6. 初探nginx负载均衡配置

    只简单说一下upstream的配置,如何进行负载均衡后续还需要多了解 1.另准备一个配置文件命名为nginx_test.conf 为了不污染原有的nginx.conf,提前复制一份配置文件做试验,然后 ...

  7. 猫眼电影爬取(一):requests+正则,并将数据存储到mysql数据库

    前面讲了如何通过pymysql操作数据库,这次写一个爬虫来提取信息,并将数据存储到mysql数据库 1.爬取目标 爬取猫眼电影TOP100榜单 要提取的信息包括:电影排名.电影名称.上映时间.分数 2 ...

  8. PHP数组合并和去重的函数有哪些

    PHP数组合并和去重的函数有哪些 一.总结 一句话总结:合并:array_merge() array_merge_recursive() +号:去重:array_flip() array_unique ...

  9. MySQL 8.0 安装时 Authentication Method

    1. 使用强密码加密授权(推荐) 8.0提供的心的授权方式,采用SHA256基础的密码加密方法. 但是需要新版本的connector,目前和Connector/J最新的时8.0 目前8.0的连接器和使 ...

  10. 漏洞复现——tomcat远程代码执行漏洞

    漏洞描述: 当存在该漏洞的Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT请求方法,攻击者可通过构造的攻击请求向服务器上传包含任意代码的 JSP 文件,造成任意代码执行 影响范 ...