엑셀 DATEDIF 완전 정복 — 근속연수·나이 계산과 MD 버그까지

최종 업데이트 2026-07-20

DATEDIF는 입사일로 근속연수를, 생년월일로 만 나이를 구할 때 가장 많이 쓰이는 함수입니다. 그런데 정작 엑셀의 함수 마법사(수식 삽입 창)에서는 검색해도 나오지 않는 '숨은 함수'라는 사실을 아는 사람이 많지 않습니다. 로터스 1-2-3과의 호환을 위해 남겨둔 함수라 마이크로소프트가 공식 목록에서 의도적으로 제외했지만, 직접 타이핑하면 정상적으로 동작합니다.

기본 구조와 단위

=DATEDIF(시작일, 종료일, "단위")
단위 코드의미
"Y"두 날짜 사이의 '만' 연수 (예: 근속 3년)
"M"두 날짜 사이의 총 개월 수
"D"두 날짜 사이의 총 일수
"YM"연수를 뺀 나머지 개월 (3년 5개월의 '5')
"MD"연수와 월수를 뺀 나머지 일수 (버그 있음, 아래 참고)

실무 예시 1 — 근속연수 계산

아래 직원 표에서 A열은 입사일, 기준일은 오늘 날짜(2026-07-20)라고 가정합니다.

이름입사일근속기간 (Y년 YM개월)
김하은2019-03-157년 4개월
이준혁2022-11-013년 8개월
박서연2015-07-2011년 0개월
=DATEDIF(A2, TODAY(), "Y") & "년 " & DATEDIF(A2, TODAY(), "YM") & "개월"

박서연의 경우 입사일(2015-07-20)과 기준일(2026-07-20)이 월·일까지 정확히 같은 날이라 'YM'(나머지 개월)이 0이 되어 '11년 0개월'로 딱 떨어집니다. 이처럼 입사 기념일 당일에 계산하면 개월 수가 0으로 나오는 것이 정상입니다.

실무 예시 2 — 만 나이 계산

생년월일이 A2에 있을 때, 오늘 기준 만 나이는 'Y' 단위 하나로 구합니다.

=DATEDIF(A2, TODAY(), "Y")

만 나이는 생일이 지났는지 여부까지 자동으로 반영합니다. 예를 들어 생년월일이 2000년 8월 1일이고 오늘이 2026년 7월 20일이라면, 아직 생일 전이므로 결과는 26이 아니라 25가 나와야 정상입니다.

알려진 버그 — 'MD' 단위는 주의해서 사용

⚠️

DATEDIF의 'MD' 단위(연수와 월수를 뺀 나머지 일수)는 마이크로소프트가 공식적으로 인정한 오래된 버그가 있습니다. 특히 시작일의 '일(day)'이 종료일의 '일'보다 크면서 두 날짜 사이에 월의 길이가 다른 달(31일→28일 등)이 끼어 있는 경우, 실제와 다른 값이나 음수에 가까운 비정상적인 결과가 나올 수 있습니다. 예를 들어 시작일이 1월 31일이고 종료일이 3월 1일인 경우처럼 '월말 날짜'가 낀 계산에서 특히 주의가 필요합니다. 실무에서 하루 단위까지 정확해야 하는 근속일수 계산이라면 'MD' 대신 전체 일수를 구하는 'D' 단위를 쓰거나, DATEDIF를 아예 쓰지 않고 (종료일-시작일)로 직접 일수 차이를 구하는 방식을 권장합니다.

DATEDIF가 오류를 낼 때 확인할 것

  • #VALUE! 오류: 시작일이 종료일보다 나중인 경우 발생합니다(입사일을 잘못 입력했거나 두 인수 순서가 바뀐 경우가 많습니다).
  • 날짜가 텍스트로 입력된 경우: 셀이 왼쪽 정렬로 보이면 텍스트일 가능성이 높습니다. DATEVALUE로 변환하거나 셀 서식을 '날짜'로 다시 지정하세요.
  • 함수 마법사(fx 버튼)에 DATEDIF가 검색되지 않는 것은 정상입니다. 자동완성 목록에도 나타나지 않을 수 있지만, 수식을 직접 입력하면 정상적으로 계산됩니다.

함께 쓰면 좋은 날짜 함수

  • TODAY(): 오늘 날짜만 반환 / NOW(): 오늘 날짜와 현재 시각을 함께 반환
  • EDATE(날짜, 개월수): 몇 개월 뒤 또는 전의 날짜를 구함 (계약 만료일, 정기 갱신일 계산에 유용)
  • EOMONTH(날짜, 0): 해당 월의 마지막 날을 구함 (정산 마감일 계산에 유용)
💡

근속연수를 '년/개월' 대신 '총 개월 수'나 '총 일수'로만 통일해서 관리하면 정렬·비교·평균 계산이 훨씬 쉬워집니다. DATEDIF(A2, TODAY(), "M")으로 총 개월 수를 구해두고, 화면에 보여줄 때만 년/개월로 변환하는 방식을 권장합니다.

실무 응용 — 근속수당 지급 대상 자동 판정

근속 3년 이상 직원에게만 근속수당을 지급한다면, DATEDIF의 'Y' 결과를 IF와 조합해 지급 대상 여부까지 한 번에 표시할 수 있습니다.

=IF(DATEDIF(A2, TODAY(), "Y")>=3, "지급대상", "미해당")

위 근속연수 표에 이 수식을 적용하면 김하은(7년 4개월)과 박서연(11년 0개월)은 '지급대상', 이준혁(3년 8개월)도 3년을 넘겼으므로 '지급대상'으로 표시되어야 합니다. 만약 근속 만 3년이 되는 정확한 기념일 당일부터 지급해야 한다면, TODAY() 대신 지급 기준일(예: 매월 1일)을 별도 셀에 입력해 DATEDIF의 종료일 인수로 넣으면 매번 오늘 날짜가 바뀌어도 결과가 흔들리지 않습니다.

근속연수·나이 계산 수식 AI로 정확하게 만들기 →

함께 보면 좋은 글