728x90
반응형

날짜 함수날짜 데이터 타입에 사용하는 함수이다.

 

Date Functions

(날짜 함수)

 

함수(Function)

설명

 

- MONTHS_BETWEEN

- ADD_MONTHS

- NEXT_DAY

- LAST_DAY

- ROUND

- TRUNC

-날짜와 날짜 사이의 개월을 계산

-날짜에 개월을 더한 날짜 계산

-날짜 후의 첫번째 요일의 날짜를 계산

-월의 마지막 날짜를 계산

-날짜를 반올림

-날짜를 절삭

위의 함수들은 날짜들을 가공하는 함수들이다. 물론 이 외에도 많이 있지만 기초적이고 많이쓰이는 함수들이다. 또 기본적으로 "SYSDATE" 라는 함수가 존재한다.

 

SYSDATE 함수는 시스템에 저장된 현재 날짜를 반환하는 함수이다.

실행 결과 

SQL>select sysdate

    from dual;

SYSDATE
--------
10/07/23

 

sysdate에 숫자를 더하면 숫자 기간만큼 더한 날짜를 계산한다.

쉽게 예를들면 sysdate+1은 내일 날짜를 구하고, sysdate-1은 어제 날짜를 구한다.

 

 

 

 

 

그럼 이제 날짜를 가공하는 함수들의 예를 들어보자.

 

-MONTHS_BETWEEN함수 (날짜와 날짜 사이의 개월을 계산)

실행 결과 

SQL>select months_between(sysdate,'09-03-01')

    from dual;

MONTHS_BETWEEN(SYSDATE,'09-03-01')
----------------------------------
                        16.7104096

 

※현재날짜(2010년 7월 23일임.)에서 09년 3월 1일 사이의 개월수는 16.7104096개월이다.

 

 

-ADD_MONTHS함수 (날짜에 개월을 더한 날짜 계산)

실행 결과 

SQL>select add_months('09-03-01',20)

    from dual;

ADD_MONT
--------
10/11/01

 

※2009년 3월 1일에 20개월을 더하면 2010년 11월 1일이 된다.

 

 

-NEXT_DAY함수 (날짜 후의 첫번째 요일의 날짜를 계산)

실행 결과 

SQL>select next_day(sysdate,'목')

    from dual;

NEXT_DAY
--------
10/07/29

 

※현재 내가 쓰고 있는 오라클이 한글형식으로 되어 있어서 두번째 인자 값을 일, 월, 화, 수 등으로 나타낼 수 있는데, 영문판인 경우에는 SUN,MON,TUE 등으로 나타낼 수 있다. 또한 숫자 값으로도 가능한데 일요일은 1, 월요일은 2 등으로 해서토요일은 7로 기술하는데 숫자가 가장 간편할 것이다.

 

 

-LAST_DAY함수 (월의 마지막 날짜를 계산)

실행 결과 

SQL>select last_day(sysdate)

    from dual;

LAST_DAY
--------
10/07/31

 

※현재 날짜가 7월 23일 이므로 7월달의 마지막 날짜는 7월 31일이다.

 

 

-ROUND함수 (날짜를 반올림)

실행 결과 

SQL>select round(sysdate,'month')

    from dual;

ROUND(SY
--------
10/08/01

 

※숫자 함수에서 ROUND함수와 똑같이 생각하면 될 것같다.

 현재 날짜(10/07/23)에서 month이하를 반올림하면 날짜에서 반올림하므로 10/08/01이 나온다.

 

 

-TRUNC함수 (날짜를 절삭)

실행 결과 

SQL>select trunc(sysdate,'year')

    from dual;

TRUNC(SY
--------
10/01/01

 

※현재 날짜(10/07/23)에서 year이하를 반올림하면 월에서 절삭하므로 10/01/01이 나온다.

 

 

 

select문에 날짜를 직접 기입할 경우에는 SESSION환경에 맞는 형식으로 써줘야 한다.

SQL> alter session set nls_territory=america;    -->영문판

 ※ 이 경우 날짜형식이 "23-JUL-10"이라고 나옴(미국에서는 일케 쓰는듯)

SQL> alter session set nls_territory=korea;       -->한글판

 ※ 이 경우 날짜형식이 "10/07/23"이라고 나옴

 

 

 

SESSION설정을 통해서 한글판이나 영문판을 설정할 수 있다.

SQL> alter session set nls_language=american;   -->영문판

SQL> alter session set nls_language=korean;      -->한글판

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,