SQL Server 根据身份证号计算年龄

时间:2019-10-12 12:07:28   收藏:0   阅读:774

CREATE FUNCTION [dbo].[Fn_GetAge](@IdCard NVARCHAR(18),@LimitdDate DATETIME)
RETURNS INT AS
BEGIN
DECLARE @BirthYear VARCHAR(4)
DECLARE @BirthMonth VARCHAR(2)
DECLARE @BirthDay VARCHAR(2)
DECLARE @BirthDate DATETIME
DECLARE @Age INT
DECLARE @Length INT
SET @Age = 0
BEGIN
SET @Length = LEN(@IdCard)
IF(@Length = 15)
BEGIN
SET @BirthYear = ‘19‘ + SUBSTRING(@IdCard,7,2)
SET @BirthMonth = SUBSTRING(@IdCard,9,2)
SET @BirthDay = SUBSTRING(@IdCard,11,2)
END
ELSE IF(@Length = 18)
BEGIN
SET @BirthYear = SUBSTRING(@IdCard,7,4)
SET @BirthMonth = SUBSTRING(@IdCard,11,2)
SET @BirthDay = SUBSTRING(@IdCard,3,2)
END
SET @BirthDate = @BirthYear + ‘-‘ + @BirthMonth + ‘-‘+ @BirthDay
SET @Age = DATEDIFF(YEAR,@BirthDate,@LimitdDate)
IF(DATEPART(MONTH,@BirthDate) > DATEPART(MONTH,@LimitdDate))
BEGIN
SET @Age = @Age - 1
END
ELSE IF(DATEPART(MONTH,@BirthDate) = DATEPART(MONTH,@LimitdDate))
BEGIN
IF(DATEPART(DAY,@BirthDate) > DATEPART(DAY,@LimitdDate))
BEGIN
SET @Age = @Age - 1
END
END
END
RETURN @Age
END

原文:https://www.cnblogs.com/gebilaoqin/p/11660405.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!