1. 程式人生 > >sql server 根據身份證號計算出生日期和年齡的存儲過程

sql server 根據身份證號計算出生日期和年齡的存儲過程

ttl 實現 分享 mst () 需要 poc getdate mtr

我這邊有一個業務,需要客戶填寫身份證號,自動計算他的出生日期和年齡

在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=445182199410103781
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=445182199410183781
exec sp_GetBirthDate_Age @IDCard,@BirthDate output,@Age output
--返回結果--
--出生日期:1994-10-18  年齡: 22

調用後結果:

技術分享

sql server 根據身份證號計算出生日期和年齡的存儲過程