본문 바로가기
내가 공부하려고 올리는/DB

오라클 - 날짜와 시간을 더하고 빼기

by 결딴력 2021. 11. 3.
반응형

오라클에서 날짜나 시간(시, 분, 초)을 더하고 빼는 방법을 알아보겠습니다.

 

우선 TO_CHAR 함수를 활용해 현재 시간을 알아보겠습니다.

TO_CHAT함수는 선택된 날짜나 시간을 본인이 원하는 형식으로

출력할 수 있게 해주는 함수입니다.

 

현재 시스템 일자를 확인할 수 있는 SYSDATE 가상 컬럼을 이용해

현재 날짜를 확인해보겠습니다.

 

다음과 같은 실행문을 작성하면,

실행문

다음과 같은 결과를 얻을 수 있습니다.

'yy'는 Year, 'mm'은 Month, 'dd'는 Day를 의미합니다.

 

결과

SYSDATE에 숫자를 더하면 어떻게 될까요?

기본적으로 SYSDATE에 더해지는 숫자는

'일자'입니다.

+1을 더하면 값이 '21년11월04'일로 바뀝니다.

 

실행문
결과

따라서 30일 넘어가는 값을 더하게 된다면,

'월'이 변화하게 됩니다.

 

실행문
결과

하지만 일자를 더해서 월이나 년도를 더하는 것은

날짜를 계산해야하기 때문에 불편합니다.

이럴 경우에는 ADD_MONTHS 함수를 사용할 수 있습니다.

실행문

위와 같이 ADD_MONTH 함수를 사용하면,

첫 번째 인덱스에는 계산할 날짜를

두 번째 인덱스에는 더할 달을 입력하면

원하는 결과를 얻을 수 있습니다.

위 실행문의 결과는 한 달을 더했기 때문에

'21년12월03일'이 나와야 하고 결과는 다음과 같습니다.

 

결과

그렇다면 주어진 두 개의 일자 사이에

몇 개월의 지났는지 확인하려면 어떡해야 할까요?

이때는 MONTHS_BETWEEN 함수를 사용하는 것이 편리합니다.

 

앞서 사용했던 함수를 사용해

다음과 같은 실행문을 입력해보겠습니다.

실행문

결과는 다음과 같습니다.

결과

그렇다면 날짜말고

'시간'은 어떻게 더할까요?

 

TO_CHAR 함수와 SYSDATE를 사용해

간단히 시간을 표시해보겠습니다.

실행문

HH는 'hour', 24는 시간 표시 형식, MI는 'minutes', SS는 'second'를 의미합니다.

실행결과는 다음과 같습니다.

결과

위와 같은 실행문에서

시간, 분, 초를 더하기 위해서는

'/24', '/(24*60)', '/(24*60*60)'과 같이 표현하여 시간을 더해야 합니다.

'/24'는 시간을

'/(24*60)'는 분을

'/(24*60*60)'는 초를 의미합니다.

 

실행문으로 확인해보겠습니다.

다음과 같이 실행문을 작성하면

실행문

이와 같은 결과를 얻을 수 있습니다.

현재 시간에서 3시간을 더한 값과

현재 시간에서 20분을 더한 값,

현재 시간에서 30초를 더한 값이

결과값으로 리턴됩니다.

결과

 

 

 


날짜와 시간을 구하는 방법이나

날짜와 시간의 차이를 구하거나 더하는 방법을 알아보았습니다.

내용이 이해 안 가거나 오류 발견 시 댓글 부탁드립니다!🙇‍♂️

반응형

댓글