날짜 차이 계산에 관련해서 문의드립니다. 0 5 2,311

by 꼰복 [SQL Query] 날짜 char 계산 [2017.06.08 14:23:37]


to_date 함수를 사용하지 않고 char형식의 값인데, 두 날짜 사이의 일수를 구하는 방법이 있을까요?

(to_char(sysdate, 'yyyymmdd') - '20160501') 이런식으로 하려고 하는데, to_date함수를 사용하지 않고 일수를 계산할 수 있나요?ㅠㅠ

select round(Months_between('20170608','20100501')*30) from dual; 이러한 방식으로도 해봤지만, 1달을 30일로 고정하여 계산하다보니 오차범위가 발생합니다. ㅠㅠ

by 마농 [2017.06.08 14:37:55]

to_char 가 아닌 to_date 를 사용해야죠. 마지막에 하루를 더할지 말지도 고민해 보세요.
- 오류 : TO_CHAR(sysdate, 'yyyymmdd') - '20160501'
- 수정 : TRUNC(sysdate) - TO_DATE('20160501', 'yyyymmdd') + 1


by 꼰복 [2017.06.08 14:46:05]

답변감사합니다 마농님!

ㅠㅠ마농님 혹시 to_date를 사용하지 않고 날짜 차이 일수를 계산할 수 있는 방법이 없을까요?..제가 만들고 있는 프로그램에서 to_date를 쓰면 제대로 동작하지 않는게 있어, to_date를 사용하지 않고 날짜 차이를 계산할 수 있는지 찾아보고 있습니다 ㅠㅠ


by 마농 [2017.06.08 14:49:22]

to_date 가 오류난다고 사용하지 않을 생각을 하는 것 보다는.
to_date 가 왜 사용할 수 없는지? 원인을 파악해서 제거하는 방향으로 가야죠.


by 꼰복 [2017.06.08 15:35:02]

답변감사합니다 마농님!

저도 왜 안되는지 많이 고민하고 시도해봤었는데..ㅠㅠ정말 알수가 없어서..설명을 하자면 너무나 복잡하기 때문에 할 수가 없습니다..c#, 엑셀 매크로 등 엮겨있어서..ㅠㅠ그러면 to_date함수 사용하는것 말고는 다르게 계산할 수 있는 쿼리는 없다는 거군요..ㅠㅠ

감사합니다!


by 마농 [2017.06.08 15:49:37]

달력테이블 만들어 BETWEEN 조건으로 카운트하면 됩니다.
안된다는게 에러가 난다는 건가요?
에러가 난다면 에러메시지를 확인하세요. 에러메시지 속에 답이 있습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입