내가 SSMS에서 테이블을 만들었습니다, 그것은 다음과 같은 필드가 있습니다SQL Server Management Studio를 계산 나이
- 이름 varchar (50)
- 생년월일 날짜
- 나이 소수 (3,0)
테이블 디자이너에서 나이와 출생 연도를 기준으로 나이를 계산할 수있는 수식을 사용하고 싶습니다.
예 : NAME = 'Joe Blow'및 BIRTHDATE = '1/1/1970'. 저는 나이를 계산하고 46 세의 나이를 되찾기를 원합니다.
내가 SSMS에서 테이블을 만들었습니다, 그것은 다음과 같은 필드가 있습니다SQL Server Management Studio를 계산 나이
테이블 디자이너에서 나이와 출생 연도를 기준으로 나이를 계산할 수있는 수식을 사용하고 싶습니다.
예 : NAME = 'Joe Blow'및 BIRTHDATE = '1/1/1970'. 저는 나이를 계산하고 46 세의 나이를 되찾기를 원합니다.
다소 까다 롭습니다. 사용하는 유혹 :
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)
)
또는 'DateDiff (day, birthdate, getdate())/365.25'를 사용하여 근사치를 사용할 수 있습니다. –
@KenWhite. . . 아마,하지만 사람들은 일반적으로 몇 년 동안 자신의 나이에 대해 상당히 특별합니다. –
나는 내 나이가 오산했을 때 (그 며칠 동안있을 수있는 창문에서) 기분을 상하게하지 않았다. 투표 나 운전과 같은 중요한 일을 저지른 경우라면 내가했을 것입니다. 그러나 일반적으로 그것은 종종 실행 가능한 해결책입니다. 계산 된 나이가 얼마나 정확하게 사용되고 있는지에 달려 있다고 생각합니다. –
의 사용 가능한 복제 [년, 월, 일에 T-SQL의 나이를 계산하는 방법 (http://stackoverflow.com/questions/57599/how-to -calculate-age-in-t-sql-years-months-months) –