MSSQL 计算年龄函数

/*
     计算年龄函数
*/
CREATE FUNCTION DBO.GETAGE
(
	@BIRTHDAY DATETIME,
	@NOWDAY DATETIME
)
RETURNS INT
AS
BEGIN
DECLARE @AGE INT, @YEAR INT, @MONTH INT, @DAY INT
SET @AGE = 0
SET @YEAR = 0
SET @MONTH = 0
SET @DAY = 0
SET @YEAR = DATEPART(YEAR,@NOWDAY) - DATEPART(YEAR, @BIRTHDAY)
SET @MONTH = DATEPART(MONTH,@NOWDAY) - DATEPART(MONTH, @BIRTHDAY)
SET @DAY = DATEPART(DAY,@NOWDAY) - DATEPART(DAY, @BIRTHDAY)
IF( @MONTH > 0)
SET @AGE = @YEAR
IF( @MONTH < 0)
SET @AGE = @YEAR - 1
IF(@MONTH = 0)
BEGIN
IF( @DAY >= 0)
SET @AGE = @YEAR
ELSE
SET @AGE = @YEAR -1
END
RETURN(@AGE)
END

 最近找到另一种更好的方法:

SELECT FLOOR(DATEDIFF(DAY,@BRITHDAY,GETDATE())/365.25)

posted @ 2013-01-17 11:03  流星飘雨  阅读(1265)  评论(0编辑  收藏  举报