날짜 함수는 날짜 데이터 타입에 사용하는 함수이다.
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; -->한글판
'SQL > ORACLE' 카테고리의 다른 글
[ORACLE]SELECT문 해석 순서 (0) | 2014.02.12 |
---|---|
[ORACLE]DUAL 테이블이란? (0) | 2014.02.12 |
[ORACLE]문자 함수(Character functions) (0) | 2014.02.12 |
[ORACLE]숫자 함수(number functions) (0) | 2014.02.12 |
Oracle Function(Date...) (0) | 2014.02.12 |
SQL - INDEX (0) | 2014.02.12 |
오라클 버전 확인, oracle version 확인 (0) | 2014.02.03 |
오라클 테이블스페이스 용량 조회, oracle tablespace 용량 조회 (0) | 2014.02.03 |