sqlserver 计算周岁年龄的函数
1.以下为创建函数语句
--@REGDATE 某日期
--@BIRTHDAY 出生日期
CREATE FUNCTION [dbo].[F_GETAGE](@REGDATE DATETIME,@BIRTHDAY DATETIME)
RETURNS int
AS
BEGIN
DECLARE @YEAR INT
DECLARE @CURRBIRTH DATETIME
DECLARE @AGE INT
--格式化只保留日期,去掉时分秒
SELECT @REGDATE=CONVERT(DATE,@REGDATE);
SELECT @BIRTHDAY=CONVERT(DATE,@BIRTHDAY);
--年份差值X
SELECT @YEAR=YEAR(@REGDATE) -YEAR(@BIRTHDAY);
--'某日期'这年此人X周岁生日是哪天
SELECT @CURRBIRTH=DATEADD(YEAR, @YEAR, @BIRTHDAY);
--如果'某日期'还没到这年此人X周岁生日,年龄=(年份差值-1)
IF @REGDATE<@CURRBIRTH
BEGIN
SELECT @AGE=(@YEAR-1);
END
ELSE
BEGIN
SELECT @AGE=@YEAR;
END
RETURN @AGE
END
2.以下为测试结果