오라클SQL 날짜 연산 및 날짜 함수

Updated:

날짜 연산 및 날짜 함수

학습 주제

  • 기본 날짜 연산
  • 날짜함수 사용하기

학습 목표

  • 날짜데이터를 이용한 계산작업을 수행할 수 있다.
  • 날짜함수를 이용한 데이터 처리작업을 할 수 있다.

기본 날짜 연산

  • 오라클 데이터베이스는 세기, 연도, 월, 일, 시, 분, 초 형태의 내부 숫자 형식으로 날짜를 저장한다.

  • 기본 Data Format 설정에 따라 화면에 표시된다.

  • 날짜표시 Format을 변경하고 싶은 경우 다음 명령을 사용한다.

    alter session set nls_data_format = ‘yyyy-mm-dd:hh24:mi:ss’;

  • 날짜에 숫자를 더하거나 빼서 날짜 값을 계산할 수 있다.
  • 날짜형 데이터 간 뺄셈을 수행할 수 있다.
함수 내용
DATE + NUMBER 날짜에 해당 일수를 더한 날짜를 반환한다.
DATE - NUMBER 날짜에 해당 일수를 뺀 날짜를 반환한다.
DATE1 - DATE2 두 날짜 사이의 경과 일수를 숫자로 반환한다.

예시

SELECT player_name, birth_date, birth_data + 1000
FROM player;

-- 날, 시, 분, 초로 계산할 수 있음
SELECT SYSDATE, SYSDATE + 1 결과1, SYSDATE+1/24 결과2, SYSDATE + 1/24/60/60 결과3
FROM dual;

SELECT player_name,birth_date, sysdate - birth_date
FROM player;

날짜 함수

함수 내용
ADD_MONTHS(D1, N) D1날짜에 N 개월 더한다.
MONTHS_BETWEEN(D1, D2) D1, D2 두 날짜 간의 경과 개월 수를 반환한다.
LAST_DAY 해당 월의 마지막 날짜를 반환한다.
ROUND 날짜를 년, 월 단위로 반올림한다.
TRUNC 날짜를 년, 월 단위로 버림한다.

예시

SELECT player_name, birth_date,
	   ROUND(birth_date, 'MM') 결과1,
	   ROUND(birth_date, 'YY') 결과2
FROM player
WHERE position = 'GK';
/*
	month는 15일 전후로 내림/올림
	year는 6월 기준으로 내림/올림
*/

SELECT player_name, birth_date,
	   TRUNC(birth_date, 'MM') 결과1,
	   TRUNC(birth_date, 'YY') 결과2
FROM player
WHERE position = 'GK';

EXTRACT

  • 날짜에서 지정한 날짜 필드값을 추출하여 반환함.

예시

SELECT player_name, birth_date,
	   EXTRACT(year FROM birth_date) 결과1,
	   EXTRACT(month FROM birth_date) 결과2,
	   EXTRACT(day FROM birth_date) 결과3
FROM player
WHERE player_name like '가%';

Interval

  • 날짜에서 지정한 날짜 필드 값을 더하거나 뺄 수 있다.

  • Interval 사용 예시

    날짜 + (INTERVAL ‘1’ YEAR) —————-1년 더하기

    날짜 + (INTERVAL ‘1’ MONTH) ————1개월 더하기

    날짜 + (INTERVAL ‘1’ DAY) ——————1일 더하기

    날짜 + (INTERVAL ‘1’ HOUR) —————1시간 더하기

    날짜 + (INTERVAL ‘1’ MINUTE) ————1분 더하기

    날짜 + (INTERVAL ‘1’ SECOND) ———–1초 더하기

    날짜 + (INTERVAL ‘02:10’ HOUR TO MINUTE) — 2시간 10분 더하기

    날짜 + (INTERVAL ‘01:30’ MINUTE TO SECOND) — 1분 30초 더하기

Comments