2011-03-24 6 views
2

사용자 DOB와 나이를 각각 저장하기 위해 DateOfBirthAge이라는 2 개의 필드가 포함 된 데이터베이스가 있습니다. DOB 일치하는 서버 날짜에 따라 Age 열이 매년 1 씩 자동으로 증가되기를 바랍니다.매년 데이터베이스 필드를 업데이트하는 방법

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? asp.netSQL Server 2008을 사용하고 있습니다. 이 행해져 Yout 테이블 작성에 따라서

[Age] AS datediff(year, DateOfBirth, getdate()) 

:

+4

[당신은 경계 경우 ... 확인해야합니다] : 여기

[AgeYears]의 계산 된 열을 사용하여, 또 다른 가능성입니까? DOB를 저장하고 나이를 계산해야합니다. –

답변

4

오히려 매장보다 모두 DateOfBirthAge, 나이를 계산 테이블에 computed column을 만들 당신이 지속 할 경우

-- Create Table with computed column 
CREATE TABLE [dbo].[CCtest] 
(
    [id] [int] not NULL, 
    [DateOfBirth] [datetime] NULL, 
    -- etc... 
    [Age] AS datediff(year, DateOfBirth, getdate()) 
) 
GO 

계산 된 값은 PERSISTED 키워드를 추가하십시오. 당신이 원하는 경우

하나의 가능성은, 나이 년 개월 표시 :

[AgeInDays] AS datediff(day, DateOfBirth, getdate()) 

후 년 개월에 AgeInDays 형식을 당신의 테이블에 뷰를 작성합니다.

create view vwCCtestAge 
AS 
select 
    id, 
    dateofbirth, 
    cast([AgeYears] as varchar(4)) + ' years ' + 
     cast(datediff(month, DateOfBirth, getdate()) 
      - case when (AgeYears > 0) then (AgeYears - 1)*12 
        else 0 
      end as varchar(4)) + ' months' as Age 
    from cctest2 
    GO 

왜 모두를 저장하는

+0

@Mitch : 계산 열에 의해 의미하는 것, 그리고 매년 나이 필드를 업데이트하는 데 어떻게 도움이 될지 자세히 설명해 주시겠습니까? 자동으로 ... 아무 설명서도 없습니다 ... – Abbas

+0

은 월 및 월을 포함하여 전체 나이를 표시 할 수 있습니다. 일 ... SQL 서버 – Abbas

+0

@Mitch : 당신도 저를 도울 수 있겠습니까? 미리 감사드립니다. – Abbas

관련 문제