Oracle 날짜 및 시간 연산 마스터하기

Oracle 데이터베이스에서 날짜와 시간은 매우 중요한 요소입니다. 데이터베이스는 날짜 및 시간 정보를 다루는 데 있어서 다양한 함수와 연산을 지원합니다.

이번 글에서는 Oracle에서 날짜와 시간 연산을 수행하는 방법에 대해 자세히 알아보겠습니다.

썸네일

Oracle의 날짜 및 시간 데이터 타입

Oracle에서 날짜는 DATE 데이터 타입으로 저장됩니다. 이 데이터 타입은 연도, 월, 일, 시, 분, 초의 정보를 포함하고 있습니다.

Oracle에서는 날짜와 시간을 다룰 때 SYSDATE라는 가상 컬럼을 활용하여 현재 시스템 날짜와 시간을 확인할 수 있습니다. SYSDATE는 현재 날짜와 시간을 반환하며, 이를 통해 다양한 날짜 및 시간 연산을 수행할 수 있습니다.

가장 기본적인 날짜 및 시간 연산은 날짜에 일수를 더하거나 빼는 것입니다. 예를 들어, SYSDATE + 1은 현재 날짜에서 하루를 더한 값을 반환합니다.

이처럼 날짜에 숫자를 더하면 기본적으로 일자 단위로 계산됩니다. 아래는 SYSDATE를 이용한 날짜 연산의 예시입니다.

연산 결과
SYSDATE 2023-11-04 12:34:56
SYSDATE + 1 2023-11-05 12:34:56
SYSDATE + 30 2023-12-04 12:34:56

위의 표에서 보시다시피, SYSDATE + 1의 결과는 하루 뒤의 날짜가 됩니다. 또한, 30일을 더한 경우에는 월이 넘어가게 됩니다.

날짜와 시간 더하기 및 빼기

Oracle에서 날짜와 시간을 더하고 빼는 방법은 여러 가지가 있습니다. 일자를 더하는 것은 간단하지만, 월이나 연도를 더할 경우에는 주의가 필요합니다.

월과 연도는 각기 다른 일수를 가질 수 있기 때문에, 직접 계산할 경우 오류가 발생할 수 있습니다. 이를 해결하기 위해 Oracle은 ADD_MONTHS라는 함수를 제공합니다.

ADD_MONTHS 함수는 첫 번째 인자로 기준 날짜를, 두 번째 인자로 더할 월 수를 받습니다. 예를 들어, 다음과 같은 쿼리를 사용하여 한 달을 더할 수 있습니다.

sql
SELECT ADD_MONTHS(SYSDATE, 1) FROM dual;

이 쿼리의 결과는 현재 날짜에서 한 달이 더해진 날짜를 반환합니다. ADD_MONTHS 함수를 사용하면 월의 말일 자동 계산이 이루어져, 31일에서 한 달을 더하더라도 자동으로 28일 또는 29일로 조정됩니다.

날짜 결과 (한 달 더하기)
2023-11-30 2023-12-30
2023-01-31 2023-02-28 (윤년일 경우 29)

위의 예시에서 보시듯이, ADD_MONTHS 함수는 월의 말일에 대한 계산을 자동으로 수행합니다. 이는 매우 유용한 기능입니다.

또한, 두 날짜 사이의 차이를 구하고 싶을 때는 MONTHS_BETWEEN 함수를 사용할 수 있습니다. 이 함수는 두 날짜를 인자로 받아, 두 날짜 사이에 몇 개월이 지났는지를 반환합니다.

sql
SELECT MONTHS_BETWEEN('2023-11-04', '2023-01-04') FROM dual;

위의 쿼리에서 두 날짜 사이의 개월 수를 계산할 수 있습니다.

날짜1 날짜2 결과 (개월 수)
2023-11-04 2023-01-04 10

다른 내용도 보러가기 #1

시간 단위로 더하기 및 빼기

Oracle에서는 시간 단위로도 날짜와 시간을 추가 및 빼는 것이 가능합니다. 시간, 분, 초를 더하기 위해서는 날짜에 대한 기본 연산을 활용해야 합니다.

Oracle에서는 날짜에 시간을 더할 때 /24, /(24*60), /(24*60*60) 형태로 나누어 사용합니다. 아래는 시간, 분, 초를 더하는 방법에 대한 예시입니다.

sql
SELECT SYSDATE + 3/24 AS '3시간 추가',
SYSDATE + 20/(24*60) AS '20분 추가',
SYSDATE + 30/(24*60*60) AS '30초 추가'
FROM dual;

위의 쿼리를 실행하면 현재 시간에서 각각 3시간, 20분, 30초가 더해진 결과를 얻을 수 있습니다.

연산 결과
SYSDATE 2023-11-04 12:34:56
SYSDATE + 3/24 2023-11-04 15:34:56
SYSDATE + 20/(24*60) 2023-11-04 12:54:56
SYSDATE + 30/(246060) 2023-11-04 12:35:26

위의 결과를 통해 시간 단위의 연산도 간단하게 수행할 수 있음을 알 수 있습니다.

날짜 및 시간의 차이 계산

Oracle에서는 두 날짜 간의 차이를 계산할 수 있는 다양한 방법이 있습니다. SYSDATE를 활용하여 가장 최근의 날짜와 특정 날짜 간의 차이를 구할 수 있습니다.

이때 SYSDATE와 비교할 날짜 간의 차이를 일수로 반환하는 기본적인 연산을 사용할 수 있습니다.

sql
SELECT SYSDATE - TO_DATE('2023-01-01', 'YYYY-MM-DD') AS '일수 차이' FROM dual;

이 쿼리는 현재 날짜와 2023년 1월 1일 사이의 일수를 계산하여 반환합니다.

날짜 결과 (일수 차이)
2023-11-04 307

이와 같이 날짜 간의 차이를 계산할 수 있으며, 이를 통해 기간을 관리하거나 이벤트의 간격을 측정하는 데 유용하게 활용할 수 있습니다.

날짜 및 시간 관련 함수 정리

Oracle에서 날짜 및 시간 연산을 수행할 때 유용한 함수들을 정리해보면 다음과 같습니다.

함수 설명
SYSDATE 현재 시스템 날짜와 시간을 반환
ADD_MONTHS 기준 날짜에 지정한 개월 수를 더함
MONTHS_BETWEEN 두 날짜 간의 개월 차이를 계산
NEXT_DAY 기준 날짜에서 지정한 요일의 다음 날짜를 반환
TRUNC 날짜의 시간 부분을 제거하여 날짜만 반환
LAST_DAY 특정 날짜가 포함된 달의 마지막 날짜를 반환

이 표를 참고하여 날짜 및 시간 관련 연산을 수행할 때 적절한 함수를 선택하여 사용하면 됩니다.

다른 내용도 보러가기 #2

마무리하며

Oracle에서 날짜와 시간 연산을 마스터하는 것은 데이터베이스를 효과적으로 활용하는 데 있어 필수적인 요소입니다. 다양한 함수와 연산 방법을 알아보고 활용하면, 데이터 처리 및 분석의 효율성을 높일 수 있습니다.

이 글을 통해 기본적인 날짜 및 시간 연산에 대해 더 깊이 이해하셨기를 바랍니다. 궁금한 점이 있거나 추가적인 질문이 있으시면 언제든지 댓글로 남겨주시기 바랍니다.

관련 영상

같이 보면 좋은 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다