검색을 통해서 아래와 같이 월차에 대해서 구하는 방법은 알았는데요.
일차를 개월수로 표현(소수점)으로 하고 싶습니다. 방법이 있을까요?
예를들어, 20240706~20240803의 기간의 일수는 29일이고 (초일산입)
이걸 개월수로 표현하면 20240706~20240705의 일수인 31일로 나누어서 29/31로 표현하고 싶거든요.
다른 예로 20240906~20241003이라고 하면 일수 28일이고 30일로 나누어서 28/30으로 표현하고 싶습니다.
고수님들께서 방법을 알려주시면 좋을듯하여 글을 남깁니다.
------------------------------------------------------------------------------------------------------------------
SELECT sdt, edt -- 2. 월차(00월 00일) , FLOOR(MONTHS_BETWEEN(edt+1, sdt)) m1 , edt - ADD_MONTHS(sdt, FLOOR(MONTHS_BETWEEN(edt+1, sdt))) + 1 m2 FROM t1 ;
일수는 당년히 맞아 떨어지지만
월수는 정확하게 딱 맞아 떨어지지 않습니다.
월마다 일수가 다르고, 특히 2월은 일수가 부족하고
윤달, 윤년에 따라 2월의 일수가 달라지고 등등
어떤 기준을 잡고 구할지 전략을 잘 세워야 합니다.
20240906 ~ 20241003 은 9월의 30일을 기준을 28/30 로 표현하고 싶다고 하셨는데?
20240926 ~ 20241023 은 어떻게 표현해야 할까요?
09월이 기준이 되어야 할까요? 시작월이 9월이니 -> 28/30
10월이 기준이 되어야 할까요? 10월의 일수가 더 많으니 -> 28/31
20240131 ~ 20240229 는 어떻게 표현해야 할까요?
31 일 기준으로는 아직 한달이 안되었는데. 2월은 이미 꽉찬 한달입니다.
시작 종료가 여러달에 걸친 자료들도 있을 것입니다.
그에 대한 전략은 있으신지요?
저는 이런 전략이 어떨까 생각합니다.
중간에 꽉 찬 달은 따로 개월수를 구하고
앞뒤로 월이 모자란 일수를 따로 구하는 방식
예를 들면 20240131 ~ 20240302 은 3개의 구간으로 나누어 합산하는 방식
1) 20240131 ~ 20240131 : 1/31
2) 20240201 ~ 20240229 : 29/29
3) 20240301 ~ 20240302 : 2/31