[Database] 날짜 함수

1. add_months


add_months는 날짜 데이터에 특정 몇개월 이후 날짜를 알려주는 함수이다.

select add_months('2021-06-01', 3) from dual;

그러면 3개월 후인 21/09/01 날짜가 출력된다. 만약 3대신 음수를 넣으면 그 이전 날짜를 구해준다.

select add_months('2021-06-01', -3) from dual;

이러면 3개월 전 날짜인 2021-03-01이 출력된다.

2. to_date sysdate


to_date는 날짜 데이터를 계산할 수 있는 함수이다. 아래 sql문을 보자

select to_date('2022-02-01') + 3 from dual;

이러면 3일이 더해진 22/02/04가 출력된다. 그러면 3일을 빼면 어떻게 될까?

select to_date('2022-02-01') - 3 from dual;

그러면 3일 전 날짜인 22/01/29가 출력된다.
현재 날짜를 출력하는 sysdate도 같은 방식으로 활용할 수 있다.

select sysdate + 20 from dual;

위 sql문을 실행하면 to_date처럼 20일 이후 날짜를 출력한다. + 20 대신 - 20을 넣으면 마찬가지로 20일 전 날짜를 출력한다.

3. current_date, current_timestamp, extract


current_date는 현재 날짜를 구하는 함수이다.

select current_date from dual;

위 sql문을 실행시키면 현재 날짜가 출력된다. sysdate와 같은 기능을 한다.
상세한 현재 일시를 알고싶으면 current_timestamp를 사용한다.

select current_timestamp from dual;

current_timestamp는 날짜, 시간, 밀리세컨초에 시간대 장소까지 나온다.
이렇게 조회한 날짜에서 연도나 월만 추출하고 싶을때 extract 함수를 사용한다.

select extract(year from date '2021-06-01')
from dual;

위 sql문을 실행하면 년도인 2021이 추출되어 출력된다. year 자리에 month를 쓰면 월인 06이 출력되고 date ‘2021-06-01’ 대신 sysdate를 써서 현재 날짜에서 추출하는 것도 가능하다.

4. last_day, next_day, months_between


last_day는 조회하는 날짜 데이터의 월의 마지막 날을 조회해준다. 다음 sql문을 실행해보자

select last_day('2021-06-01') from dual;

그러면 6월의 마지막 날인 30이 출력된다. 06대신 02를 넣으면 2021년 2월 마지막 날인 28이 출력된다. last_day도 종종 쓰인다.
next_day는 지정 날짜 이후에 오는 첫 요일 날짜를 보여준다.

select next_day('2022-02-01', '월요일') from dual;

위 sql문을 실행하면 2022-02-01 화요일 이후 다음주 월요일인 22/02/07 날짜를 출력한다. 월요일 대신 토요일을 넣으면 4일 후인 날짜 22/02/05를 출력한다.
months_between은 두 날짜의 개월 수를 추출해준다.

select months_between(sysdate, '2021-11-01')
from dual;

위 sql문을 실행하면 3.61187313321385902031063321385902031063이 출력되는데 우리는 3개월이라는 수만 필요하므로 앞에 trunc를 추가하면 3을 구할 수 있다.

select trunc( months_between(sysdate, '2021-11-01'))
from dual;






© 2021.11. by 21thkafka

Powered by 21thkafka