날짜 함수

  • 오라클을 날짜데이터를 제어할 수 있는 함수들을 제공하고 있다.
  • sysdate : 현재 날짜와 시간을 반환한다.
  • months_between : 두 날짜간의 개월 수를 구한다.
  • add_months : 주어진 개월 수 만큼 더한다.
  • next_day : 돌아오는 지정된 요일의 날짜를 반환한다.
  • last_day : 지정된 달에 마지막 날을 반환한다.
  • round : 지정된 기준으로 반올림한다.
  • trunc : 지정된 기준으로 버린다.

ex)

-- 현재 날짜 구하기
select sysdate
from dual;

ex)

-- 날짜 데이터 연산(10000일빼기, 10000일더하기)
select sysdate -10000, sysdate+10000
from dual;

ex)

-- 각 사원이 입사한 날짜로 부터 1000일 후가 되는 날짜를 가져온다.
select hiredate+1000
from emp;

ex)

-- 직무가 SALESMAN인 사원의 입사일 100일전 날짜를 가져온다.
select hiredate-100
from emp
where job = 'SALESMAN';

ex)

-- 전 사원의 근무 일을 가져온다.
select trunc(sysdate-hiredate)
from emp;

ex)

-- 반올림(버림은 trunc를 사용하면된다.)
select round(sysdate, 'CC') as "년도두자리"
, round(sysdate, 'YYYY') as "월기준"
, round(sysdate, 'ddd') as "시기준"
, round(sysdate, 'HH') as "분기준"
, round(sysdate, 'MM') as "일기준"
, round(sysdate, 'DAY') as "주기준"
, round(sysdate, 'MI') as "초기준"
from dual;

결과값 : 01/01/01, 21/01/01, 21/03/23, 21/03/22, 21/04/01, 21/03/21, 21/03/22

ex)

-- 각 사원의 입사일을 월 기준으로 반올림한다.
select round(hiredate, 'yyyy')
from emp;

ex)

-- 1981년에 입사한 사원들의 사원번호, 사원이름, 급여, 입사일을가져온다.
select empno, ename, sal, hiredate
from emp
where hiredate >='1981/01/01' and hiredate <= '1981/12/31';

select empno, ename, sal, hiredate
from emp
where hiredate between '1981/01/01' and '1981/12/31';

select empno, ename, sal, hiredate
from emp
where trunc(hiredate, 'yyyy') = '1981/01/01';

ex)

-- 두 날짜 사이의 일수를 구한다.
select sysdate - hiredate
from emp;

ex)

-- 모든 사원이 근무한 개월 수를 구한다.
select trunc(months_between(sysdate, hiredate))
from emp;

ex)

-- 개월수를 더한다.(오늘날짜로부터 100개월 후)
select add_months(sysdate, 100)
from dual;

ex)

-- 각 사원들의 입사일 후 100개월 되는 날짜를 구한다.
select add_months(hiredate, 100)
from emp;

ex)

-- 지정된 날짜를 기준으로 지정된 다음 요일이 몇일인지 구한다.
select next_day(sysdate, '월요일')
from dual;

ex)

-- 지정된 날짜의 월 마지막 날짜를 구한다.
select sysdate, last_day(sysdate)
from dual;

ex)

-- to_char : 날자데이터를 문자형으로 반환한다.
주로 오라클에서 다른 프로그램으로 출력할 때 사용한다.
select to_char(sysdate, 'YYYY-MM-DD HH:MI:SS AM')
from dual;

날자 형식에는 한글이 들어갈 수 없다.

ex)

-- to_date : 프로그램 -> 오라클
select to_date('2018-03-20 01:58:20 오후', 'YYYY-MM-DD HH:MI:SS AM')
from dual;

각자리에 해당하는 데이터를 날자형식으로 반환하여 출력한다.

ex)

-- 사원들의 입사일을 다음과 같은 양식으로 가져온다.
-- 1900-10-10
select to_char(hiredate, 'YYYY-MM-DD')
from emp;