엑셀 DATEDIF 함수: 고정 날짜로 기간·윤년·D-day 검산하기
엑셀 DATEDIF 함수로 기간을 계산할 때는 기준일을 고정하고 전체 개월 수와 나머지 개월 수를 구분하는 것부터 시작하는 편이 좋습니다. TODAY()를 넣은 수식과 예전 날짜의 정답을 비교하면, 정상 계산도 틀린 것처럼 보일 수 있습니다.
이 글은 가상 직원 세 명의 시작일과 기준일 2026-07-10으로 기간표를 만듭니다. 같은 날짜·월말·윤일·날짜 역전을 별도 사례로 확인하고, 지난 일정까지 표시하는 D-day 계산도 구분합니다. 예제 날짜는 설명용 고정 입력이지 실제 인사 자료가 아닙니다.
먼저 고칠 세 가지 오해
-
2021-03-15에서 2026-07-11까지는 여전히 5년 3개월입니다. 7월 15일이 되어야 5년 4개월이 됩니다.
-
나머지 개월 수
YM이 0인 것은 정상입니다. 정확히 5년이 지난 날짜는 5년 0개월로 표시할 수 있습니다. -
시작일이 종료일보다 늦다면 날짜나 결과를 임의로 고치지 않습니다. 원본 기록과 기준일을 확인하기 전까지 보류합니다.

첨부 파일 기간표의 계산 미리보기입니다. 실제 Excel 앱 실행 화면이나 직원 자료가 아닙니다.
DATEDIF 단위는 무엇이 다른가
Microsoft의 DATEDIF 설명은 두 날짜 사이의 연·월·일 계산과 각 단위의 의미를 안내합니다. 이 예제의 기본 문법은 다음과 같습니다.
=DATEDIF(시작일,종료일,"단위")
| 단위 | 구분할 값 | 이 글에서의 사용 |
|---|---|---|
Y |
완전히 지난 연수 | 기간 문구의 연 |
M |
완전히 지난 전체 개월 수 | 전체 월 비교 |
D |
두 날짜 사이의 일수 | 날짜 차이 검산 |
YM |
연 단위를 제외한 나머지 월 | 기간 문구의 월 |
YD |
연도를 제외한 일 차이 | 월수 보정에 사용하지 않음 |
MD |
연·월을 제외한 일 차이 | 이 예제에서는 사용하지 않음 |
Microsoft는 일부 상황에서 DATEDIF 결과에 문제가 있을 수 있다고 경고하고, 특히 MD 사용을 권장하지 않습니다. 나머지 일수를 임의로 30이나 31로 나눠 월수에 더하거나 빼는 방식도 이 예제에서 사용하지 않습니다.
아래 수식은 단위를 읽기 쉽게 대문자로 통일합니다. 이 표는 달력상 기간을 연습하는 자료이며, 조직의 근속 인정 규칙까지 결정하는 계산기는 아닙니다.
1. 기준일과 시작일을 날짜 값으로 입력하기
첨부 파일의 기간표 시트에서 B2가 공통 기준일입니다. 처음에는 다음과 같이 고정합니다.
=DATE(2026,7,10)
본문과 파일의 시작일은 아래와 같습니다.
| 위치 | 대상 | 시작일 |
|---|---|---|
| B5 | 직원 A | 2021-03-15 |
| B6 | 직원 B | 2023-09-01 |
| B7 | 직원 C | 2019-12-01 |
직접 입력할 때도 =DATE(2021,3,15)처럼 연·월·일을 분리하면 입력 의도가 분명해집니다. 실제 날짜 값으로 저장한 뒤 yyyy-mm-dd 등의 서식을 적용합니다.
날짜 서식은 표시 방법이지 텍스트를 날짜로 변환하는 명령이 아닙니다. 숫자처럼 보이는 텍스트나 잘못된 날짜 문자열은 원본을 확인하고 별도 열에서 변환해야 합니다. Microsoft의 DATEVALUE 설명은 텍스트 날짜를 일련번호로 바꾸는 동작과 컴퓨터의 날짜 설정에 따라 해석이 달라질 수 있다는 점을 안내합니다.
C5는 기준일 B2를 참조하고 C7까지 채웁니다.
=IF(ISNUMBER($B$2),$B$2,"")
기준일이 숫자가 아니면 종료일 칸을 비워 다음 단계에서 계산을 보류합니다. 원본 시작일을 보존하면서 기준일만 바꿔 비교할 수 있는 구조입니다.
2. 계산보다 먼저 입력 상태 확인하기
기간표 D5에는 날짜 값·시간 포함·날짜 범위·역전 여부를 순서대로 확인하는 수식이 들어 있습니다.
=IFERROR(IF(COUNT(B5:C5)<>2,"입력오류",IF(OR(B5<>INT(B5),C5<>INT(C5)),"시간포함",IF(OR(B5<1,C5<1,B5>DATE(9999,12,31),C5>DATE(9999,12,31)),"범위오류",IF(B5>C5,"날짜역전","정상")))),"입력오류")
이 파일은 Excel 기본 날짜 체계의 양의 날짜 일련번호를 전제로 합니다. 날짜만 다루는 연습이라 시간의 소수 부분이 섞이면 따로 표시합니다. 입력에 시간을 유지해야 하는 업무라면 임의로 잘라 내지 말고 날짜 기준을 먼저 정해야 합니다.
| D열 상태 | 뜻 | 다음 행동 |
|---|---|---|
| 정상 | 숫자 날짜이며 시작일이 종료일보다 늦지 않음 | 기간 계산 |
| 입력오류 | 빈칸·문자 등 날짜 값이 아님 | 원본과 변환 과정을 확인 |
| 시간포함 | 날짜에 시간 소수 부분이 있음 | 시간 처리 기준을 확인 |
| 범위오류 | 이 파일의 날짜 일련번호 범위를 벗어남 | 날짜 체계와 원본을 확인 |
| 날짜역전 | 시작일이 종료일보다 늦음 | 원본 기록과 기준일을 확인 |
숫자인지만 확인한다고 업무상 맞는 날짜까지 보장되지는 않습니다. 다른 파일의 날짜 체계나 값을 가져올 때는 실제 표시 날짜도 대조하세요.
3. 연·월·일을 별도 열에서 계산하기
D열이 정상인 행에서만 DATEDIF를 실행합니다. 아래 수식을 각각 5행에 넣고 7행까지 채웁니다.
E5: =IF(D5="정상",DATEDIF(B5,C5,"Y"),"")
F5: =IF(D5="정상",DATEDIF(B5,C5,"YM"),"")
G5: =IF(D5="정상",DATEDIF(B5,C5,"M"),"")
H5: =IF(D5="정상",DATEDIF(B5,C5,"D"),"")
E5: 같은 표시는 수식을 넣을 위치이며 수식 자체에 포함하지 않습니다. 직원 A의 고정 결과는 E5=5, F5=3, G5=63, H5=1943입니다.
I5는 앞에서 계산한 연과 나머지 월을 연결합니다.
=IF(D5="정상",E5&"년 "&F5&"개월","계산보류")
연·월 계산을 I열 안에서 다시 반복하지 않으므로, 문구가 이상하면 E·F열을 먼저 볼 수 있습니다. 원본 날짜가 잘못된 경우에는 그럴듯한 0년 0개월 대신 계산보류를 표시합니다.
| 대상 | 완전 연 Y | 나머지 월 YM | 전체 월 M | 전체 일 D | 기간 문구 |
|---|---|---|---|---|---|
| 직원 A | 5 | 3 | 63 | 1,943 | 5년 3개월 |
| 직원 B | 2 | 10 | 34 | 1,043 | 2년 10개월 |
| 직원 C | 6 | 7 | 79 | 2,413 | 6년 7개월 |
위 수치는 모두 기준일 2026-07-10의 기대값입니다. 나머지 월 3과 전체 월 63은 서로 다른 열에 있어야 합니다. 월수를 일수로 바꾸려면 달마다 길이가 다르다는 문제도 있으므로, 두 값을 단순 비례식으로 환산하지 않습니다.
4. 하루가 바뀔 때와 한 달이 채워질 때 구분하기

첨부 경계값 시트의 계산 미리보기입니다. 날짜를 하루 바꿨을 때 일수와 나머지 개월 수가 각각 어떻게 달라지는지 비교합니다.
시작일 2021-03-15를 그대로 두고 종료일만 바꿉니다.
| 종료일 | 기간 문구 | 전체 월 | 전체 일 |
|---|---|---|---|
| 2026-07-10 | 5년 3개월 | 63 | 1,943 |
| 2026-07-11 | 5년 3개월 | 63 | 1,944 |
| 2026-07-15 | 5년 4개월 | 64 | 1,948 |
7월 10일에서 11일로 바뀌면 일수는 하나 늘지만, 시작일의 월 기준일인 15일이 아직 되지 않았으므로 나머지 월은 그대로입니다. 화면에 날짜가 하루 바뀌었다는 이유로 월수를 직접 1 늘리면 안 됩니다.
경계값 시트에는 아래 달력 사례도 넣었습니다.
| 시작일 | 종료일 | 기대 결과 |
|---|---|---|
| 2026-07-10 | 2026-07-10 | 0년 0개월, 전체 0일 |
| 2021-03-31 | 2021-05-01 | 0년 1개월, 전체 31일 |
| 2024-02-28 | 2024-03-01 | 0년 0개월, 전체 2일 |
| 2024-02-29 | 2024-03-01 | 0년 0개월, 전체 1일 |
| 2021-02-28 | 2026-02-28 | 5년 0개월, 전체 1,826일 |
2021-03-31에서 2021-05-01까지의 전체 일수는 31입니다. 여기에 YD를 끼워 넣고 1일로 보정하거나, 월수를 맞추기 위해 결과를 덮어쓰는 절차는 필요하지 않습니다.
윤일이 포함된 짧은 구간의 일수와 매년 같은 날의 처리 규칙도 별개입니다. 이 표의 몇 가지 결과만으로 모든 월말·윤일 업무 규칙을 검증했다고 볼 수는 없습니다.
파일은 기간표·경계값·README 세 시트로 구성했습니다. 기간표에는 세 직원과 D-day 세 일정이 있고, 경계값에는 정상 날짜와 빈칸·문자·역전·시간 포함을 합친 12개 가상 사례가 있습니다. 원본을 바꿔 오류를 숨기는 대신 예상한 보류 상태까지 대조합니다.
수식과 기대값을 제공하는 연습 파일이며, 실제 Microsoft Excel 앱 실행을 보증하는 자료는 아닙니다. 파일을 연 뒤 초기 입력에서 기대값을 확인하고 자신의 데이터를 넣으세요.
5. 전체 일수와 D-day는 날짜를 빼서 확인하기
정상 날짜만 있는 행에서 전체 일수는 종료일-시작일로도 확인할 수 있습니다.
=C5-B5
시작일과 종료일이 같은 날이면 차이는 0입니다. 두 날짜를 모두 포함해 세어야 하는 업무는 포함 규칙을 따로 정해야 하며, 모든 계산에 무조건 1을 더하지 않습니다.
D-day는 순서가 다릅니다. 마감일에서 기준일을 빼야 미래 일정은 양수, 지난 일정은 음수가 됩니다. DATEDIF는 시작일이 종료일보다 큰 경우 #NUM!이 발생할 수 있으므로, 지난 일정도 표시할 목적이라면 단순 날짜 차이가 알맞습니다.
기간표 A11:G14의 예제는 B2를 공통 기준일로 사용합니다. B12의 마감일 입력 상태를 C12에서 확인한 뒤 D12에 날짜 차이를 넣습니다.
=IF(C12="정상",B12-$B$2,"")
E12는 그 차이에 따라 문구를 만듭니다.
=IF(C12<>"정상","계산보류",IF(D12>0,"D-"&D12,IF(D12=0,"D-day","D+"&ABS(D12))))

기준일 2026-07-10의 첨부 일정표 미리보기입니다. 음수 날짜 차이는 그대로 남기고 문구에서만 지난 일수의 크기를 표시합니다.
| 마감일 | 마감일-기준일 | 표시 |
|---|---|---|
| 2026-07-09 | -1 | D+1 |
| 2026-07-10 | 0 | D-day |
| 2026-07-13 | 3 | D-3 |
ABS를 날짜 차이 자체에 적용하면 지난 일정과 다가올 일정을 구분할 수 없습니다. 위 수식은 음수라는 사실을 먼저 확인한 뒤 표시 문구에서만 ABS를 씁니다.
검산 기준과 실패 복구
기간표 J5:J7은 계산값과 K:P의 회색 기대값을 대조합니다. 경계값 J5:J16은 입력 상태와 계산 보류 여부까지 함께 비교합니다. 여기서 일치는 유효한 날짜만 뜻하지 않습니다. 날짜 역전을 정확히 보류한 경우도 기대한 동작과 일치합니다.
확인 순서는 다음과 같습니다.
-
기준일 B2가 2026-07-10인지 확인합니다. 먼저 고정 날짜로 대조해야 합니다.
-
기간표 D5:D7이 정상인지 보고, 직원 A의 Y=5·YM=3·M=63·D=1943과 비교합니다.
-
경계값의 7월 11일 사례가 여전히 5년 3개월인지, 같은 날짜 사례가 0년 0개월인지 확인합니다.
-
날짜 역전·빈칸·문자·시간 포함 사례에서 기간 숫자가 비고 계산보류가 나오는지 확인합니다.
-
D-day의 지난 일정이 D+1이고 미래 일정이 D-3인지 확인합니다.
#NUM!이 나면 시작일과 종료일의 순서를 먼저 확인합니다. 미래 시작일을 오늘로 바꾸지 않습니다. 입사 예정일이나 계획일이 맞을 수도 있으므로 기준일 또는 계산 목적이 잘못됐는지 확인해야 합니다.
텍스트 날짜가 원인이면 원본 열을 유지하고 별도 열에서 변환합니다. 표시 형식만 바꾸거나 모든 오류를 0으로 치환하면 날짜 오류가 정상 기간처럼 보일 수 있습니다. 월수나 일수의 계산 결과도 직접 수정하지 않습니다.
고정 검산이 끝난 뒤 TODAY로 전환하기
실제 현재 날짜 기준으로 보려면 B2를 다음 수식으로 바꿀 수 있습니다.
=TODAY()
Microsoft의 TODAY 설명은 현재 날짜의 일련번호를 반환하며, 기대한 때 날짜가 바뀌지 않으면 재계산 설정을 확인하도록 안내합니다.
B2를 바꾼 뒤에도 회색 기대값은 2026-07-10의 정답으로 남습니다. 따라서 ‘불일치’가 나왔다고 수식이 틀렸다고 단정하지 말고 기준일이 달라졌는지부터 확인합니다. 보고서를 나중에 재현해야 한다면 계산에 사용한 기준일을 별도로 기록하세요.
휴무일을 제외한 근무일, 시간 단위 차이, 조직별 근속 인정 기준은 이 예제와 다른 계산입니다. 고정 예제를 통과했다고 그 업무 기준까지 자동으로 맞는 것은 아닙니다.
공식 참고 자료
기능 설명 확인일은 2026-09-12입니다. 본문의 날짜별 결과는 고정 입력을 계산한 예제 기대값입니다.
-
Microsoft DATEDIF: 단위와 날짜 역전, MD의 알려진 문제
-
Microsoft TODAY: 현재 날짜와 재계산 설정
-
Microsoft DATEVALUE: 텍스트 날짜 변환과 날짜 설정의 영향
함께 볼 예제
-
WORKDAY·NETWORKDAYS로 시작일·휴일·주말 검산하기: 달력 일수와 근무일 수를 구분할 때
-
IF 함수로 목표 달성 여부 표시하기: 계산 전에 조건과 보류 상태를 나눌 때