블로그로 돌아가기
3 min read

SQL에서 나이를 계산하는 방법(PostgreSQL, MySQL, SQL Server)

생년월일부터 나이를 계산하는 실용적인 SQL 패턴(완료 연도, 정확한 연도 및 월, 특정 날짜 기준 나이)을 알아보세요. PostgreSQL, MySQL 및 SQL Server에 대한 예제가 포함되어 있습니다.

SQL에서 나이를 계산하는 방법(PostgreSQL, MySQL, SQL Server)

생년월일부터 SQL로 나이를 계산해야 합니까? 이 가이드에서는 일반 데이터베이스에 대한 실용적이고 복사 가능한 쿼리를 보여줍니다. 다음을 계산하는 방법을 배우게 됩니다.

  • 연령(완료 연수)
  • 특정 날짜 기준 연령(오늘뿐만 아니라)
  • 자세한 내용이 필요한 경우 정확한 스타일 출력(연도 및 월)

1) 사용 사례에서 '연령'이 무엇을 의미하는지 결정합니다.

대부분의 비즈니스 로직은 완료 연수를 사용합니다. 이는 2000년 6월 10일에 태어난 사람이 2026년 6월 10일에 25세가 된다는 것을 의미합니다. YEAR(today) - YEAR(dob)와 같은 단순 연도 뺄셈은 생일 전이 잘못되므로 주의하세요.

2) PostgreSQL: 연수(완료 연수)

PostgreSQL에는 간격을 반환하는 age() 함수가 내장되어 있습니다. 다음과 같이 전체 연도를 추출합니다.

추출 선택(YEAR FROM 나이(CURRENT_DATE, dob)) AS age_years
사람에게서;

PostgreSQL: 특정 날짜 기준 수명

SELECT EXTRACT(YEAR FROM age(DATE '2026-02-23', dob)) AS age_years
사람에게서;

3) MySQL: 연수(완료 연수)

MySQL에서는 TIMESTAMPDIFF:

를 사용합니다.
TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age_years 선택
사람에게서;

MySQL: 특정 날짜 기준 수명

TIMESTAMPDIFF 선택(연도, dob, DATE('2026-02-23')) AS age_years
사람으로부터;

4) SQL Server: 연수(완료 연수)

SQL Server의 일반적인 패턴은 DATEDIFF에서 생일 확인을 뺀 것입니다.

선택
  DATEDIFF(연도, dob, CAST(GETDATE() AS 날짜))
  - 사례
      WHEN DATEADD(연도, DATEDIFF(연도, dob, CAST(GETDATE() AS 날짜)), dob) > CAST(GETDATE() AS 날짜)
      그 다음 1 그 외 0
    END AS 연령_년
사람에게서;

SQL Server: 특정 날짜 기준 수명

DECLARE @as_of 날짜 = '2026-02-23';
선택
  DATEDIFF(연도, dob, @as_of)
  - 사례
      언제 DATEADD(연도, DATEDIFF(연도, dob, @as_of), dob) > @as_of
      그 다음 1 그 외 0
    END AS 연령_년
사람에게서;

5) 정확한 연령(년 및 월) 예시

'31년 4개월'과 같은 '정확한' 표시를 원하는 경우 연도를 먼저 계산한 다음 마지막 생일 이후의 개월 수를 계산하세요. 다음은 PostgreSQL 예시 중 하나입니다.

기본 AS 사용(
  SELECT dob, CURRENT_DATE AS_of
  사람들로부터
)
선택
  EXTRACT(YEAR FROM age(as_of, dob)) AS 연도,
  EXTRACT(MONTH FROM age(as_of, dob)) AS 개월
FROM 베이스;

일반적인 함정

  • 시간대: 가능한 경우 DOB를 날짜로 저장합니다. 날짜시간은 구역에 따라 바뀔 수 있습니다.
  • 윤일 생일: 윤년이 아닌 해에 무슨 일이 일어나는지 정의합니다. 대부분의 시스템은 정책에 따라 2004-02-29 생일을 02-28 또는 03-01로 처리합니다.
  • Null 또는 향후 DOB: 필터 또는 가드, 그렇지 않은 경우쿼리가 null 또는 음수 값을 반환합니다.

빠른 상태 점검

단일 DOB를 신속하게 확인하려면 온라인 계산기를 사용할 수 있습니다. 온라인으로 연령 계산.

관련 가이드

FAQ

YEAR(오늘) 빼기 YEAR(dob)이 잘못된 이유는 무엇인가요?

올해 생일이 아직 지났는지 여부를 무시하므로 생일 전 연령을 과장합니다.

생년월일에 가장 안전한 SQL 유형은 무엇인가요?

날짜에만 관심이 있는 경우 DOB에 날짜 열(날짜/시간 아님)을 사용하세요.