Oracle 데이터베이스에서 날짜와 시간 데이터를 다루는 것은 매우 중요한 작업입니다. 비즈니스 애플리케이션에서 날짜와 시간은 중요한 요소가 되며, 이를 효과적으로 처리하는 능력은 데이터베이스 관리에 있어 필수적입니다.
본 글에서는 Oracle에서 날짜와 시간을 계산하는 다양한 방법을 자세히 살펴보겠습니다. 각 섹션에서는 관련된 SQL 쿼리와 함께 설명하여, 독자들이 실무에서 유용하게 활용할 수 있도록 돕겠습니다.
![]()
Oracle에서의 날짜 특징

Oracle 데이터베이스에서 날짜는 내부적으로 연도, 월, 일, 시간, 분, 초의 숫자 형식으로 저장됩니다. 이러한 저장 방식 덕분에 날짜에 대한 다양한 계산이 가능해집니다.
Oracle의 기본 날짜 형식은 ‘DD-MON-YY’이며, 이는 일-월-연도의 형식으로 표시됩니다. 예를 들어, ’07-JAN-23’은 2023년 1월 7일을 의미합니다.
Oracle에서 날짜와 시간을 다루기 위해 사용되는 주요 함수 중 하나는 SYSDATE입니다. 이 함수는 현재의 날짜와 시간을 반환하며, 데이터 타입은 DATE입니다.
예를 들어, SELECT SYSDATE FROM DUAL;을 실행하면 현재 날짜와 시간이 출력됩니다. DUAL은 Oracle에서 제공하는 더미 테이블로, 간단한 쿼리를 실행할 때 자주 사용됩니다.
다음 표는 Oracle의 날짜 관련 기본 정보를 요약한 것입니다.
| 항목 | 설명 |
|---|---|
| 기본 형식 | DD-MON-YY |
| SYSDATE 반환 형식 | 날짜와 시간을 포함한 DATE 타입 |
| DATE 타입 저장 방식 | 내부적으로 연도, 월, 일, 시간, 분, 초로 저장 |
| 기본 날짜 함수 | SYSDATE |
이러한 기본적인 지식을 바탕으로, 날짜 연산을 위한 여러 가지 방법을 살펴보겠습니다.
Oracle에서의 날짜 연산

Oracle에서 날짜 연산은 매우 간단합니다. 날짜에 숫자를 더하거나 빼는 방식으로 날짜를 쉽게 조정할 수 있습니다.
날짜에 숫자를 더하면 지정한 날짜로부터 며칠 후의 날짜를 계산할 수 있으며, 반대로 숫자를 빼면 며칠 전의 날짜를 계산할 수 있습니다. 예를 들어, 특정 날짜에 10일을 더하고 싶다면 다음과 같은 쿼리를 사용할 수 있습니다.
sql
SELECT SYSDATE + 10 FROM DUAL;
이 쿼리는 현재 날짜로부터 10일 후의 날짜를 반환합니다. 반대로, 특정 날짜에서 15일을 빼고 싶다면 다음과 같이 사용할 수 있습니다.
sql
SELECT SYSDATE - 15 FROM DUAL;
두 날짜 간의 차이를 구하는 것도 가능합니다. 두 날짜를 빼면 결과는 숫자로 반환되며, 이 숫자는 두 날짜 사이의 일수를 나타냅니다.
예를 들어, 아래 쿼리는 특정 날짜와 현재 날짜 간의 차이를 계산합니다.
sql
SELECT (SYSDATE - TO_DATE('2023-01-01', 'YYYY-MM-DD')) AS DAYS_DIFF FROM DUAL;
이 쿼리는 2023년 1월 1일과 현재 날짜 사이의 일수를 반환합니다. 다음 표는 날짜 연산의 예를 정리한 것입니다.
| 연산 | 설명 | 예제 쿼리 |
|---|---|---|
| 날짜 더하기 | 특정 날짜에 며칠 더하기 | SELECT SYSDATE + 10 FROM DUAL; |
| 날짜 빼기 | 특정 날짜에서 며칠 빼기 | SELECT SYSDATE - 15 FROM DUAL; |
| 날짜 차이 계산 | 두 날짜 간의 차이를 계산 | SELECT (SYSDATE - TO_DATE('2023-01-01', 'YYYY-MM-DD')) FROM DUAL; |
위와 같은 날짜 연산은 Oracle에서 매우 자주 사용됩니다. 이를 통해 실시간 데이터 분석이나 보고서 작성 시 유용하게 활용할 수 있습니다.
날짜 형식 변환 및 출력

Oracle에서는 날짜 형식을 변환하고 출력하는 데 유용한 여러 함수가 존재합니다. 예를 들어, TO_CHAR 함수를 사용하면 날짜를 원하는 형식의 문자열로 변환할 수 있습니다.
기본적으로 Oracle은 날짜를 ‘DD-MON-YY’ 형식으로 출력하지만, 사용자가 원하는 형식으로 출력할 수 있는 유연성을 제공합니다. 다음은 TO_CHAR 함수를 사용하여 날짜를 다양한 형식으로 출력하는 예시입니다.
sql
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS FORMATTED_DATE FROM DUAL;
이 쿼리는 현재 날짜를 ‘YYYY-MM-DD’ 형식으로 출력합니다. 이 외에도 다양한 형식으로 출력할 수 있으며, 원하는 형식에 따라 TO_CHAR 함수의 두 번째 인자를 조정하면 됩니다.
또한, 날짜를 출력할 때 언어와 지역 설정에 따라 출력 형식이 달라질 수 있습니다. 예를 들어, 한국어로 월과 일을 출력하고 싶다면 다음과 같은 쿼리를 사용할 수 있습니다.
sql
ALTER SESSION SET NLS_LANGUAGE = 'KOREAN';
SELECT TO_CHAR(SYSDATE, 'MM월 DD일') AS KOREAN_DATE FROM DUAL;
이 쿼리는 현재 날짜를 한국어 형식으로 출력합니다. 다음 표는 날짜 형식 변환의 예를 정리한 것입니다.
| 형식 | 설명 | 예제 쿼리 |
|---|---|---|
| 기본 형식 | 기본 날짜 형식 | SELECT TO_CHAR(SYSDATE) FROM DUAL; |
| YYYY-MM-DD 형식 | 연도-월-일 형식으로 출력 | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL; |
| 한국어 형식 | 한국어로 월과 일을 출력 | SELECT TO_CHAR(SYSDATE, 'MM월 DD일') FROM DUAL; |
이러한 형식 변환 기능은 보고서 작성 및 데이터 분석에서 매우 유용하게 사용될 수 있습니다.
날짜 관련 함수

Oracle은 날짜와 시간을 다루기 위한 다양한 내장 함수를 제공합니다. 이러한 함수들은 날짜 계산을 보다 효율적으로 수행할 수 있도록 돕습니다.
주요 함수 중 몇 가지를 소개하겠습니다.
EXTRACT 함수
EXTRACT 함수는 날짜에서 연도, 월, 일 등의 특정 요소를 추출하는 데 사용됩니다. 기본 문법은 다음과 같습니다.
sql
SELECT EXTRACT(YEAR FROM SYSDATE) AS CURRENT_YEAR FROM DUAL;
이 쿼리는 현재 연도를 반환합니다. 이와 같은 방식으로 월, 일, 시, 분, 초를 추출할 수도 있습니다.
MONTHS_BETWEEN 함수
MONTHS_BETWEEN 함수는 두 날짜 간의 개월 수를 계산합니다. 예를 들어, 2015년 5월 21일부터 2019년 3월 20일까지의 개월 수를 알고 싶다면 다음과 같은 쿼리를 사용할 수 있습니다.
sql
SELECT MONTHS_BETWEEN(TO_DATE('2019-03-20', 'YYYY-MM-DD'), TO_DATE('2015-05-21', 'YYYY-MM-DD')) AS MONTH_DIFF FROM DUAL;
이 쿼리는 두 날짜 간의 개월 수를 반환합니다.
ADD_MONTHS 함수
ADD_MONTHS 함수는 특정 날짜에 n개월을 더하는 데 사용됩니다. 예를 들어, 고객이 첫 구매를 한 날에 30개월의 유료 멤버십을 가입했다고 가정할 때, 멤버십 계약 종료 날짜를 계산할 수 있습니다.
sql
SELECT ADD_MONTHS(TO_DATE('2021-01-01', 'YYYY-MM-DD'), 30) AS MEMBERSHIP_END_DATE FROM DUAL;
이 쿼리는 지정된 날짜에 30개월을 더한 날짜를 반환합니다. 다음 표는 날짜 관련 함수의 예를 정리한 것입니다.
| 함수 | 설명 | 예제 쿼리 |
|---|---|---|
| EXTRACT | 특정 날짜 요소 추출 | SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL; |
| MONTHS_BETWEEN | 두 날짜 간의 개월 수 계산 | SELECT MONTHS_BETWEEN(TO_DATE('2019-03-20', 'YYYY-MM-DD'), TO_DATE('2015-05-21', 'YYYY-MM-DD')) FROM DUAL; |
| ADD_MONTHS | 날짜에 n개월 더하기 | SELECT ADD_MONTHS(TO_DATE('2021-01-01', 'YYYY-MM-DD'), 30) FROM DUAL; |
이와 같이 Oracle에서 제공하는 날짜 관련 함수들은 다양한 데이터 처리 작업을 수행하는 데 매우 유용합니다. 각 함수의 사용법을 익히면, 복잡한 날짜 계산도 간편하게 처리할 수 있습니다.
결론
Oracle에서 날짜와 시간을 계산하는 방법은 다양하며, 이를 통해 데이터 분석 및 보고서 작성 시 많은 이점을 누릴 수 있습니다. 기본적인 날짜 연산부터 시작하여, 날짜 형식 변환과 날짜 관련 함수까지 다양하게 활용할 수 있습니다.
이 글에서 소개한 내용은 Oracle 데이터베이스를 사용하는 데 있어 실무에서 유용하게 활용될 수 있을 것입니다. 날짜와 시간 데이터의 효과적인 관리는 비즈니스 의사결정에 큰 영향을 미칠 수 있으므로, 오늘 소개한 방법들을 잘 숙지하여 활용하시길 바랍니다.