>데이터 베이스 >MySQL 튜토리얼 >SQL을 사용하여 생년월일로부터 나이를 연 단위로 정확하게 계산하려면 어떻게 해야 합니까?

SQL을 사용하여 생년월일로부터 나이를 연 단위로 정확하게 계산하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-22 13:32:41336검색

How Can I Accurately Calculate Age in Years from a Date of Birth Using SQL?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.