SQL Server 根据身份证号计算年龄
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