[ORACLE SQL] 오라클에서 날짜 계산하기

Namgon·2021년 4월 2일
0

ORACLE

목록 보기
1/2

평소 SQL에 약해서 공부해야 겠다는 생각이 들었다.(후...)
그래서 공부하다가 이건 괜찮겠다 싶은 것들을 블로그에 남기고자 한다.

날짜 계산

기본

-- [대상date] + 10
select sysdate + 10
from   dual;

기본 중의 기본이다. + 한만큼 day가 더해지고, - 한만큼 day가 감소된다.
그렇다면 + 1/24는?

이건 뭐 다들 아실 거라 생각한다. 1일을 24로 나눈다는 의미는 1시간을 의미하니까.
이런식으로 1/24/60/60 으로 초 단위까지 기본 덧셈 뺄샘 연산자로 가능하다.

하지만 이런식으로 계산하면 치명적인 단점이 존재하니..
그건 바로 매 월마다 일 수가 다르다는 것. 이게 무슨 말이냐?

우리가 평소 10달을 더하기 위해서는 각 달의 일 수를 체크해야 한다.
30 * 10 으로 하면 300일이긴 한데.. 달에 31일이 있을 수 있고 30일 혹은 28, 29일이 있을 수도 있다.

그러니까 결론은 함수를 이용하면 풀린다.

ADD_MONTHS : 날짜 계산 함수

-- add_months([대상date],[계산시킬 월])
select add_months(sysdate, 10)
from   dual;

그래서 정확한 날짜 계산을 할 때에는 함수를 이용해 정확한 계산을 하도록 하자. 요런식으로 진짜 10달을 더하도록 한다.

MONTHS_BETWEEN : 날짜 사이 기간 계산 함수

-- MONTHS_BETWEEN([비교대상date1],[비교대상date2])
select MONTHS_BETWEEN(sysdate, sysdate + 100)
from   dual;

요 함수도 나름 괜찮은게 가끔 두 사이 기간을 구해야 할 때가 있다. 이때 이 함수를 사용하면 편하게 구할 수 있다.
머 예를 들면 어떤 사원의 입사 이후 현재 까지의 근퇴 기간을 구한다던지 등등 모쪼록 꽤나 쓰일 것 같아서 적어봤다.

EXTRACT : 날짜 필드 값 추출 함수

-- EXTRACT(year/month/day from [대상date])
select EXTRACT(year from sysdate)
from   dual;

이 함수는 날짜에서 지정한 날짜 필드 값만을 따로 추출해서 반환해주는 함수이다.
내가 해당 날짜의 년도 혹은 월, 분, 초만 따로 뽑아낼 때 유용하게 사용할 수 있다.

profile
make more services :)

0개의 댓글