'MSSQL'에 해당되는 글 4건

  1. 2011.11.01 주민등록번호로 나이 알아내는 함수

주민등록번호로 나이 알아내는 함수


주민등록번호를 넘겨서 나이를 리턴하는 SQL Server 함수입니다.
생일이 지났으면 (현재년도 - 출생년도) + 1을 해서 리턴합니다.

CREATE FUNCTION [dbo].[UF_getAge]

(

    @serialNumber varchar(13)   -- 주민등록번호

)


RETURNS int

AS

BEGIN


    DECLARE @age int                    -- 리턴값(나이)


    DECLARE @sex varchar(1)         --성별

    DECLARE @birthYear int             --생년  

    DECLARE @birthMM varchar(2)   --생월

    DECLARE @birthDD varchar(2)     --생일

    DECLARE @currYear int              --현년

    DECLARE @currMM varchar(2)    --현월

    DECLARE @currDD varchar(2)      --현일


    SET @sex = substring(@serialNumber, 7, 1)

    SET @birthYear = substring(@serialNumber, 1, 2)

    SET @birthMM = substring(@serialNumber, 3, 2)

    SET @birthDD = substring(@serialNumber, 5, 2)


    IF ((@sex = 0) OR (@sex = 9))

        SET @birthYear =  1800 + @birthYear

    ELSE IF ((@sex = 1) OR (@sex = 2) OR (@sex = 5) OR (@sex = 6))

        SET @birthYear =  1900 + @birthYear

    ELSE IF ((@sex = 3) OR (@sex = 4) OR (@sex = 7) OR (@sex = 8))

        SET @birthYear =  2000 + @birthYear


    SET @currYear = year(getdate())

    SET @currMM = month(getdate())

    SET @currDD = day(getdate())

    SET @age = convert(int, @currYear)-convert(int, @birthYear)


    IF(@birthMM < @currMM)

        BEGIN

            SET @age = @age + 1

        END

    ELSE IF(@birthMM = @currMM)

        BEGIN

            IF(@birthDD >= @currDD)

                SET @age = @age + 1

        END


    RETURN @age

END



예제
select dbo.UF_getAge('8601162345678')     결과 : 26


현재날짜를 가지고 계산하므로 해가 바뀌면 결과값도 계속 바뀝니다. (←당연하잖아
prev 1 2 3 4 next