您的位置:首页 > 数据库

SQL通过出生日期获取年龄

2015-09-03 14:18 459 查看
IF EXISTS(SELECT 1 FROM sysobjects WHERE [name] = 'GetAge')

    DROP FUNCTION dbo.GetAge

go

CREATE FUNCTION dbo.GetAge

(

    @birthday DATETIME

)

RETURNS INT

AS

BEGIN

    IF(@birthday IS NOT NULL AND ISDATE(@birthday) = 1)

        BEGIN

            DECLARE @age INT , @y INT , @m INT , @d INT , @now DATETIME

            SET @now = GETDATE()

            SET @y = DATEPART(YEAR,@now) - DATEPART(YEAR,@birthday)

            SET @m = DATEPART(MONTH,@now) - DATEPART(MONTH,@birthday)

            SET @d = DATEPART(DAY,@now) - DATEPART(DAY,@birthday)

            IF(@m = 0 AND @d = 0)

                BEGIN

                    SET @age = @y

                END

            ELSE

                BEGIN

                    IF @m > 0 OR (@m = 0 AND @d > 0)

                        SET @age = @y

                    ELSE

                        SET @age = @y - 1

                END

            IF @age < 0 SET @age = 0

        END

    ELSE

        BEGIN

            SET @age = NULL

        END

    RETURN @age

END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql server sql age