我这边有一个业务,需要客户填写身份证号,自动计算他的出生日期和年龄
在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 = DATEDI