본문 바로가기
데이터베이스/기초 SQL 입문

날짜 연산 및 날짜 함수

by 스키피땅콩버터 2020. 9. 11.
반응형

1. 기본 날짜 연산

 

기본 날짜 계산

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

- 기본 Data Format 설정에 따라 화면에 표시됨

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

alter session set nls_date_format = 'yyyy-mm-dd:hh24:mi:ss';

(sql Developer은 해당 명령을 통해 바꿔 줄수 있다.)

(yyyy: 년, mm: 월, dd:일, hh: 시간 24는 24시간으로 표시하겠다. ss: 초 )

- 날짜에 숫자를 더하거나 빼서 날짜 값을 계산 할 수 있음

- 날짜형 데이터 간 뺄셈을 수행 할 수 있음

함수 내용
DATE + NUMBER 날짜에 해당 일수를 더한 날짜를 리턴
DATE - NUMBER 날짜에 해당 일수를 뺀 날짜를 리턴
DATE1-DATE2 두 날짜 사이의 경과 일수를 숫자로 리턴

선수들의 이름, 생일, 생일에 1000일을 더한 결과 조회


수행 결과 확인

SYSDATE: 오늘날짜 현재 시간을 알려줌.

SYSDATE + 1 : 하루단위로계산 

SYSDATE + 1/24 : 한시간 만 더해

SYSDATE + 1/24/60 :  1분만 더해

SYSDATE + 1/24/60 /60 : 1초만 더해 


선수들 이름, 생일, 오늘날짜에서 생일을 뺀 결과 조회


emp 줄마다 (오늘 날짜,시간)을 찍어주는데, 테이블의 데이터개수만큼 찍어준다.

 

 

이때 간단하게 한개만 정보조회할때 dual테이블 조회

 

 

 

날짜 표시 Format을 변경

컴퓨터에 등록된오늘날짜 현재시간 정보를 가져옵니다.

회사에서는 회사 서버의 정보 기준으로 오늘날짜 현재시간 정보를 가져온다.

 


오늘날짜기준으로 +10 일

 

 

 

1시간 +1 

 

 

날짜와 날짜사이의 결과 를 빼주면, 두날짜 사이의 경과 일수 알 수 있다.

날짜에서 날짜를 더하면 에러 발생!


2. 날짜 함수 사용하기

날짜 함수

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

 

결과1 : 3년뒤의 결과, 결과 2 : 오늘 날짜 현재시간에 1개월 전 즉, 한달전 날짜 확인 가능

 

 

선수이름, 생일, 오늘날짜와 생일 날짜 간 경과 개월 수 조회

 

 

결과1 : 생일의 월만남기고 버림, 결과 2: 생일의 년도만 남기고 버림

 

 

해당 년, 월 단위로 Round함수를 통해 반올림

 

- MM은 일자가 15일 기준으로 15일까지는 이번달, 15일 이후는 다음달로 넘겨서 표시된다.

- YY는 월기준 이다. 1월~6월 까지는 올해년도 7월~12월 은 내년으로 처리된다.

 

 

 

오늘날짜로 부터 10개월 후 (300은 30일 *10개월 = 300)

 

 

약간의 오차가 발생한다 (윤년이 존재)이럴때 오차없이 더하고 싶을때 사용하는 함수 :  add_months

 

 

 

1.몇 년 일했는지 알고 싶을때 오늘 날짜에서 입사일 빼주기

2.월표시를 /12 를 통해 보면 36년 근무했다는 것을 확인 할 수 있다.

3.이때 소수점 뒷자리를 보고싶지 않을 때 Trunc함수를 사용해주면 됩니다.

 

 

3번 결과 확인 

 

 

 

해당 월의 마지막 날짜 알고 싶을 때 :LAST_DAY 함수 사용한 예

 

 

뒤에 시분초만 초기화해서 쓰고 싶을때 날짜함수에 Trunc 함수 사용 하여 초기화되어 사용 할 수 있습니다.

 

 

 

 

월까지만 두고 뒤에 다 버리기  즉 일자부터 다 지우기

년까지만 표시하고 다 초기화 하고 싶으면 'mm' -> 'YY'


EXTRACT 함수

 

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

- 선수들 이름, 생일 날짜, 생일 날짜에서 년도, 월, 일자만 추출해서 조회

 

결과 1 :  생일인 날짜에서 년만 뽑겠습니다.

결과 2 :  생일인 날짜에서 나는 월만 뽑겠습니다.

결과 3 :  생일인 날짜에서 나는 일자만 뽑겠습니다.

 

 

Interval 함수

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

 

GK 포지션 선수의 이름, 생일, 생일에 50년 더해서 조회

 

두시간 3분 증가한 시간을 조회 하고 싶을때

만약 hour 자리->minute을 넣어주고, minute 자리-> second를 넣어주면 2분 3초 후의 결과를 확인 할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

'데이터베이스 > 기초 SQL 입문' 카테고리의 다른 글

일반 함수  (0) 2020.09.13
변환 함수  (0) 2020.09.13
문자 숫자 함수  (0) 2020.09.06
복합조건 지정 및 데이터 정렬  (0) 2020.09.06
SQL문 작성 규칙 및 SELECT사용법  (0) 2020.09.01