집 >데이터 베이스 >MySQL 튜토리얼 >SQL의 getDate()를 사용하여 생년월일로부터 나이를 계산하는 방법은 무엇입니까?
SQL의 getDate() 함수를 사용하여 생년월일을 기준으로 나이를 계산합니다
질문:
많은 데이터베이스가 생년월일을 포함한 개인 정보를 유지하고 있습니다. 기록관리를 위한 정확한 연령추적을 위해서는 저장된 생년월일을 개인의 나이(년)로 환산해야 합니다.
해결책:
문자열 날짜를 날짜 데이터 유형으로 변환:
<code class="language-sql">CONVERT(datetime, DOB)</code>
나이를 연 단위로 계산:
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate())</code>
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0</code>
출력:
<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0 AS AGE, DOB FROM [YourTable];</code>
정확성 고려 사항:
윤년과 정확한 날짜 계산은 정확성에 영향을 미칩니다. 정확성을 높이려면 다음 사항을 고려하세요.
연령을 정수로 계산하는 가장 좋은 방법:
<code class="language-sql">(CONVERT(int, CONVERT(char(8), @Now, 112)) - CONVERT(char(8), @Dob, 112)) / 10000</code>
나이를 소수로 계산하는 가장 좋은 방법:
<code class="language-sql">1.0 * DATEADD(yy, @Dob, @Now) + CASE WHEN @Now >= DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)) THEN -- 当年生日已过 (1.0 * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now) / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1)) ) ELSE -- 当年生日未过 -1 * ( -1.0 * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now) / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1)) ) END</code>
위 내용은 SQL의 getDate()를 사용하여 생년월일로부터 나이를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!