2016-07-27 2 views
0

내가 SSMS에서 테이블을 만들었습니다, 그것은 다음과 같은 필드가 있습니다SQL Server Management Studio를 계산 나이

  • 이름 varchar (50)
  • 생년월일 날짜
  • 나이 소수 (3,0)

테이블 디자이너에서 나이와 출생 연도를 기준으로 나이를 계산할 수있는 수식을 사용하고 싶습니다.

예 : NAME = 'Joe Blow'및 BIRTHDATE = '1/1/1970'. 저는 나이를 계산하고 46 세의 나이를 되찾기를 원합니다.

+2

의 사용 가능한 복제 [년, 월, 일에 T-SQL의 나이를 계산하는 방법 (http://stackoverflow.com/questions/57599/how-to -calculate-age-in-t-sql-years-months-months) –

답변

0

다소 까다 롭습니다. 사용하는 유혹 :

select datediff(year, birthdate, getdate()) 

그러나,이 두 날짜 사이의 연도 경계의 수 (월의 1sts)를 계산합니다. 그리고 그것은 시대가 아닙니다.

실제 나이를 얻는 한 가지 방법은 각 값에서 해당 연도의 현재 날짜를 뺍니다. 이 정상화가 작동해야합니다 :

select datediff(year, 
       dateadd(day, 1 - datepart(dy, birthdate), birthdate), 
       dateadd(day, 1 - datepart(dy, birthdate), getdate()) 
       ) 

심지어 이것은 윤년에 미묘한 오프 - 바이 - 하나 오류가있을 수 있습니다. 그래서, 당신은 무력을 사용할 수 있습니다

select (datediff(year, birthdate, getdate()) - 
     (case when datepart(month, birthdate) * 100 + datepart(day, birthdate) > 
        datepart(month, getdate()) * 100 + datepart(day, birthdate) 
       then 1 else 0 
     end) 
     ) 
+0

또는 'DateDiff (day, birthdate, getdate())/365.25'를 사용하여 근사치를 사용할 수 있습니다. –

+0

@KenWhite. . . 아마,하지만 사람들은 일반적으로 몇 년 동안 자신의 나이에 대해 상당히 특별합니다. –

+0

나는 내 나이가 오산했을 때 (그 며칠 동안있을 수있는 창문에서) 기분을 상하게하지 않았다. 투표 나 운전과 같은 중요한 일을 저지른 경우라면 내가했을 것입니다. 그러나 일반적으로 그것은 종종 실행 가능한 해결책입니다. 계산 된 나이가 얼마나 정확하게 사용되고 있는지에 달려 있다고 생각합니다. –

관련 문제