>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 나이를 계산하는 5가지 방법과 각각의 장단점을 요약합니다.

MySQL에서 나이를 계산하는 5가지 방법과 각각의 장단점을 요약합니다.

零下一度
零下一度원래의
2017-05-05 16:39:411749검색

저는 이전에 mysql을 잘 사용하지 않았고, mysql 기능에 대해 잘 알지도 못했는데, 이 문제를 접하고 바로 바이두를 검색해보니 이 두 가지 방법이 바이두 블로그에서 1위를 차지했습니다.

방법 1

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age

방법 1에서도 작성자가 결함을 지적했습니다. 즉, 날짜가 미래 날짜인 경우 결과가 음수가 아닌 0이 되고, 여기서는 두 가지 작업이 사용됩니다.

방법 2

SELECT DATE_FORMAT(NOW(), &#39;%Y&#39;) - DATE_FORMAT(birthday, &#39;%Y&#39;) - (DATE_FORMAT(NOW(), &#39;00-%m-%d&#39;) < DATE_FORMAT(birthday, &#39;00-%m-%d&#39;)) AS age

방법 2는 방법 1의 음수 문제를 해결하지만 여기서는 6개의 함수와 3개의 연산자가 사용되어 좀 더 복잡해 보입니다.

이 게시물을 읽고 깜짝 놀랐습니다. 이전에는 SQL Server를 사용하는 것이 어떻게 그렇게 복잡할 수 있습니까? 저는 간단하고 효율적인 방법이 있어야 한다고 굳게 믿습니다. 위의 방법을 기반으로 개선된 방법이 빠르게 발견되었습니다.

개선된 방법 1과 방법 2

SELECT year( from_days( datediff( now( ), birthdate)));
SELECT YEAR(CURDATE())-YEAR(birthday)-(RIGHT(CURDATE(),5)<RIGHT(birthday,5));

개선된 방법 1, 함수 1개 감소, 연산자 1개 누락 날짜가 미래 날짜인 경우 계산 결과는 여전히 0입니다.
개선된 방법 2에는 여전히 6개의 함수와 3개의 연산자가 있는데, 이는 날짜의 오른쪽 다섯 자리를 취하며 날짜 형식이 '2013-01-01'이면 문제가 없습니다. 날짜 형식이 '2013-1-1' 약식 형식인 경우 오른쪽 다섯 자리가 '3-1-1'로 빠져서 오류가 발생합니다.

그런 다음 MYSQL 도움말 문서의 날짜 기능을 기반으로 세 번째 방법을 생각했습니다.

방법 3

SELECT FLOOR(DATEDIFF(CURDATE(), @birthday)/365.2422)

현재 생일과 이전 일 수를 가져옵니다. 날짜를 1로 나눈 1년의 실제 일수(365일, 5시간, 48분 46초)를 반올림합니다. 이는 세 가지 함수와 하나의 연산자만 사용합니다.

그런 다음 외국 웹사이트에서 네 번째 방법을 빨리 찾았습니다.

방법 4

 SELECT  TIMESTAMPDIFF(YEAR, @birthday, CURDATE())

이 방법은 두 가지 기능만 사용하여 수행하므로 가장 좋은 방법입니다. .

위의 4가지 방법을 테스트해봤습니다. 현재 날짜가 '2017-1-13'이고 생일이 '2013-1-14'라면 생일이 하루 남았으니, 즉 4살이 됩니다. 이제 하루 밖에 남지 않았는데 결과가 아직 3년이나 남았으니 방법 3을 수정하고 라운드하여 방법 5를 얻으세요.

방법 5

SELECT ROUND(DATEDIFF(CURDATE(), @birthday)/365.2422)

나이 이런 식으로 계산한 것이 실제 연령에 1년 더 가깝습니다. 가장 가깝지만 아마도 방법 4가 연령 정의와 가장 일치할 것입니다.

[관련 추천]

1. 무료 mysql 온라인 동영상 튜토리얼

MySQL 최신 매뉴얼 튜토리얼

3. 불린 교육 Yan Shiba mysql 소개 영상 튜토리얼

위 내용은 MySQL에서 나이를 계산하는 5가지 방법과 각각의 장단점을 요약합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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