'쿼리'에 해당되는 글 3건
- 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
현재날짜를 가지고 계산하므로 해가 바뀌면 결과값도 계속 바뀝니다. (←당연하잖아