SELECT CASE WHEN SUBSTRING(ENTER_DT,5,2) > SUBSTRING(Z.RETIRE_DT,5,2) THEN DATEDIFF(YY, CONVERT(DATETIME, ENTER_DT), Z.RETIRE_DTM) - 1 ELSE DATEDIFF(YY, CONVERT(DATETIME, ENTER_DT), Z.RETIRE_DTM) END AS 년 , CASE WHEN RIGHT(ENTER_DT,2) > RIGHT(Z.RETIRE_DT,2) THEN DATEDIFF(M, CONVERT(DATETIME, ENTER_DT), Z.RETIRE_DTM)%12 - 1 ELSE DATEDIFF(M, CONVERT(DATETIME, ENTER_DT), Z.RETIRE_DTM)%12 END AS 개월 , CASE WHEN RIGHT(ENTER_DT,2) > RIGHT(Z.RETIRE_DT,2) THEN DATEDIFF(D,CONVERT(CHAR(6),DATEADD(M,-1, Z.RETIRE_DTM),112)+RIGHT(ENTER_DT,2), Z.RETIRE_DTM)+1 ELSE DATEDIFF(D,CONVERT(CHAR(6),DATEADD(M,0, Z.RETIRE_DTM),112)+RIGHT(ENTER_DT,2), Z.RETIRE_DTM)+1 END AS 일 FROM ( SELECT '20100708' AS ENTER_DT , '20120301' AS RETIRE_DT , CONVERT(DATETIME, '20120301') AS RETIRE_DTM ) Z
결과 : 1년 7개월 23일
* 퇴사일이 20120308 이면
결과는 1년 8개월 1일
* 일자(마지막 2자리)에 따라 개월 수와 일 수가 계산됨(일 수가 무조건 양수로 표현되도록 함)
SELECT CASE WHEN SUBSTRING(ENTER_DT,5,2) > SUBSTRING(Z.RETIRE_DT,5,2)
답글삭제THEN DATEDIFF(YY, CONVERT(DATETIME, ENTER_DT), Z.RETIRE_DTM) - 1
ELSE DATEDIFF(YY, CONVERT(DATETIME, ENTER_DT), Z.RETIRE_DTM)
END AS 년
, CASE WHEN RIGHT(ENTER_DT,2) > RIGHT(Z.RETIRE_DT,2)
THEN DATEDIFF(M, CONVERT(DATETIME, ENTER_DT), Z.RETIRE_DTM)%12 - 1
ELSE DATEDIFF(M, CONVERT(DATETIME, ENTER_DT), Z.RETIRE_DTM)%12
END AS 개월
, CASE WHEN RIGHT(ENTER_DT,2) > RIGHT(Z.RETIRE_DT,2)
THEN DATEDIFF(D,CONVERT(CHAR(6),DATEADD(M,-1, Z.RETIRE_DTM),112)+RIGHT(ENTER_DT,2), Z.RETIRE_DTM)+1
ELSE DATEDIFF(D,CONVERT(CHAR(6),DATEADD(M,0, Z.RETIRE_DTM),112)+RIGHT(ENTER_DT,2), Z.RETIRE_DTM)+1
END AS 일
FROM (
SELECT '20160516' AS ENTER_DT
, '20190510' AS RETIRE_DT
, CONVERT(DATETIME, '20190510') AS RETIRE_DTM
) Z
결과: 3년 -1개월 25일
CASE WHEN CONVERT(int,CONVERT(varchar(10),DATEADD(YEAR, DATEDIFF(year, START_DATE, END_DATE), START_DATE),112)) > CONVERT(int, REPLACE(END_DATE, '-', ''))
삭제THEN DATEDIFF(year, START_DATE, END_DATE) -1
ELSE DATEDIFF(year, START_DATE, END_DATE)
END AS EXPYEAR,
CASE WHEN CONVERT(int,CONVERT(varchar(10), DATEADD(MONTH, DATEDIFF(month, START_DATE, END_DATE), START_DATE),112)) > CONVERT(int, REPLACE(END_DATE, '-', ''))
THEN DATEDIFF(month, START_DATE, END_DATE) % 12 - 1
ELSE DATEDIFF(month, START_DATE, END_DATE) % 12
END AS EXPMON,
CASE WHEN (CONVERT(int, SUBSTRING(END_DATE, 9,2)) - CONVERT(int,SUBSTRING(START_DATE, 9,2))) > 0
THEN CONVERT(int, SUBSTRING(END_DATE, 9,2)) - CONVERT(int,SUBSTRING(START_DATE, 9,2))
ELSE CONVERT(int, SUBSTRING(END_DATE, 9,2)) - CONVERT(int,SUBSTRING(START_DATE, 9,2)) + 31
전 이 글 보고 이렇게 작성했어요
도움 많이 됐습니다...
너무 어렵네요