집 >데이터 베이스 >MySQL 튜토리얼 >SQL을 사용하여 생년월일로부터 나이를 연 단위로 정확하게 계산하려면 어떻게 해야 합니까?
생년월일을 기준으로 SQL에서 정확한 연령을 계산하려면 생년월일 열이 유효한 datetime
또는 date
데이터 유형이어야 합니다. 현재 생년월일 열이 nvarchar(25)
인 경우 먼저 적절한 날짜 형식으로 변환해야 합니다.
이 변환이 완료되었다고 가정하고 효과적인 연령 계산 방법을 살펴보겠습니다.
방법 1: 단순화된 접근 방식(대략)
이 방법은 DATEDIFF
을 사용하여 현재 날짜와 생년월일 사이의 시간 차이를 찾은 다음 대략적인 1년 시간 수(8766.0)로 나눕니다.
<code class="language-sql">SELECT DATEDIFF(hour, @dob, GETDATE())/8766.0 AS AgeYearsDecimal</code>
십진수 나이를 산출하지만 월별 일수와 윤년의 변화로 인해 정확도가 제한됩니다.
향상되고 더욱 정확한 방법:
정수 나이 계산:
이 방법은 전체 연도를 계산합니다.
<code class="language-sql">SELECT (CONVERT(int,CONVERT(char(8),@Now,112))-CONVERT(char(8),@Dob,112))/10000 AS AgeIntYears</code>
정확한 소수점 나이 계산:
더 정확한 소수 연령을 계산하려면 다음과 같은 개선된 방법을 사용하는 것이 좋습니다.
<code class="language-sql">SELECT 1.0* DateDiff(yy,@Dob,@Now) +CASE WHEN @Now >= DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)) THEN ( 1.0 * DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)),@Now) / DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),1,1),DATEFROMPARTS(DATEPART(yyyy,@Now)+1,1,1)) ) ELSE -1 * ( * DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)),@Now) / DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),1,1),DATEFROMPARTS(DATEPART(yyyy,@Now)+1,1,1)) ) END AS AgeYearsDecimal</code>
이 고급 방법은 윤년을 계산하고 나이를 매우 정확한 십진수로 표현합니다. 정확한 연령 계산이 필요한 상황에서 선호되는 방법입니다.
위 내용은 SQL을 사용하여 생년월일로부터 나이를 연 단위로 정확하게 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!