EXCEL의 함수 수식을 이용하여 계산하는 국세청 퇴직소득관련 근무년수를 구하는 문제입니다.
같은 기간을 같은 수식을 excel과 mssql에 넣어도 다른 결과가 나오는 것때문에 문제를 발생시키고 있습니다.
1. 국세청 기준의 excel 수식
DATEDIF(FROM_date + 1, TO_date + 1,"M") + 1
2. MS SQL
DATEDIFF(MM, DATEADD(DD, 1, FROM_date ), DATEADD(DD, 1, TO_date )) + 1
3. 다른 결과의 From, To
1) 20111001 ~ 20130114
- 엑셀 16
- mssql 16
- 안분
: 해당기간동안을 2012년 기준으로 나눠 합쳐 계산 결과가 같아야 함
(1) 20111001 ~ 20121231 : 16 (엑셀로는 15)
(2) 20130101 ~ 20130114 : 1 (엑셀로는 1)
합 17로 엑셀의 16과는 차이 발생
2) 20120228 ~ 20130228 (2012.02.29 윤년)
- 엑셀 13
- mssql 14
- 안분
: 해당기간동안을 2012년 기준으로 나눠 합쳐 계산 결과가 같아야 함
(1) 20120228 ~ 20121231 : 12 (엑셀로는 11
(2) 20130101 ~ 20130228 : 3 (엑셀로는 2)
합 15로 엑셀의 13과는 차이 발생
어떻게 MSSQL의 날짜 수식을 구성해야 국세청 기준의 날짜 계산식이 완성 될까요?
이게 월갯수로 따지면 20120228 ~ 20130228(+1 씩해서 보면 20120229 ~ 20130301) 은 14개월이 맞기는 한데
아마도 DATEDIF는 일수를 따지는 것 같습니다.
SET @months = DATEDIFF(MM, DATEADD(DD, 1, FROM_date ), DATEADD(DD, 1, TO_date )) + 1
IF DAY(DATEADD(DD, 1, FROM_date )) >= DAY(DATEADD(DD, 1, TO_date ))
SET @Months = CASE WHEN @months < 0 THEN 0 ELSE @months - 1 END
이런식으로 하면되지 않을까요?