오라클 데이터 베이스 테이블에서 날짜 컬럼을 SELECT 쿼리 문으로 가져올 때, 가져온 날짜 데이터에서 연산을 통해 데이터를 처리하는 경우가 많습니다.
가져온 날짜 데이터에서 특정 일 수를 더하거나 빼기도 하고, 날짜가 포함된 월의 마지막 일자를 구하기도 하고, 월이나 년도를 더하거나 빼서 원하는 날짜를 계산하기도 합니다.
날짜 데이터를 가져온 상태에서 프로그램 구문으로 날짜를 계산할 수도 있지만 SELECT 쿼리 문에서 바로 계산된 날짜를 가져오면 불필요한 프로그램 구문을 줄일 수가 있습니다.
이번 글에서는 오라클(Oracle) SELECT 문에서 날짜 함수 활용 및 날짜 연산 방법에 대해 알아보겠습니다.
오라클 현재 날짜 및 시간 구하기
▶ 오라클 데이터베이스가 구동 되는 Oracle 서버의 현재 날짜와 시간을 구하는 SELECT 문입니다.
- SELECT SYSDATE FROM DUAL
- SELECT CURRENT_DATE FROM DUAL
- 결과 : 2024-05-13 오후 3:30:56
오라클 날짜를 원하는 포맷 형식으로 표현 방법
▶ 오라클 테이블의 날짜 컬럼의 데이터를 가져올 때 원하는 포맷 형식으로 변환해서 가져올 수 있습니다.
- SELECT TO_CHAR(SYSDATE,‘YYYYMMDDHH24MISS’) FROM DUAL
- 결과 : 20240513153056
▼ 날짜 포맷
- YYYY : 년도를 4자리로 표시
- YY : 년도를 2자리로 표시
- MM : 월을 숫자로 표현
- DD : 일을 숫자로 표현
- MON : 월을 알파벳으로 표현
- DAY : 요일 표현
- DY : 요일을 요일 약어로 표현
▼ 시간 포맷
- AM/PM : 오전,오후 표현
- HH/HH12 : 시간(1~12)
- HH24 : 시간(0~23)
- MI : 분 표현
- SS : 초 표현
오라클 해당 월의 마지막 날짜 구하기
▶ 날짜 데이터가 포함 된 해당 월의 마지막 날짜를 구하는 것은 자주 구현하는 구문 중에 하나입니다.
- SELECT LAST_DAY(SYSDATE) FROM DUAL
- 결과 : 2024-05-31 오후 3:58:40
오라클 날짜 연산하기
▶ 오라클 쿼리 문에서 다양한 날짜 함수를 활용하여 연산을 할 수 있습니다.
▼ 날짜에 일 수를 더하기 / 빼기
- SELECT SYSDATE + 1 FROM DUAL;
- SELECT SYSDATE – 1 FROM DUAL;
- 현재 날짜에서 1일을 더하기 및 빼기
▼ 날짜에 월을 더하기 / 빼기
- SELECT ADD_MONTHS(SYSDATE, 1) FROM DUAL;
- SELECT ADD_MONTHS(SYSDATE, -1) FROM DUAL;
- 현재 날짜에서 1개월을 더하기 및 빼기
▼ 날짜에 년을 더하기/빼기
- SELECT ADD_MONTHS(SYSDATE, 12) FROM DUAL;
- SELECT ADD_MONTHS(SYSDATE, -12) FROM DUAL;
- 현재 날짜에서 1년을 더하기 및 빼기
▼ 두 날짜 사이의 일 수 계산하기
- SELECT SYSDATE – ADD_MONTHS(SYSDATE,-1) FROM DUAL;
- 현재 날짜에서 1개월 전 날짜 뺀 일 수를 계산합니다.
- 결과는 30이 됩니다.
▼ 두날짜 사이의 월 수 계산하기
- SELECT MONTHS_BETWEEN(ADD_MONTHS(SYSDATE,1), SYSDATE) FROM DUAL;
- 1개월 후와 현재 날짜의 월 수를 계산합니다.
- 결과는 1이 됩니다.
▼ 두날짜 사이의 년 수 계산하기
- SELECT (ADD_MONTHS(SYSDATE,24) – SYSDATE) / 365 FROM DUAL;
- 2년 후와 현재 날짜의 날짜 계산 일 수에서 365를 나누어 년도를 계산합니다.
- 결과는 2가 됩니다.
▼ 해당 날짜로부터 다음에 오는 특정 요일의 날짜 구하기
- SELECT NEXT_DAY(SYSDATE, ‘MONDAY’) FROM DUAL;
- 현재 날짜 다음에 오는 ‘MONDAY’ 날짜를 가져옵니다.
- ‘MON’으로 약어 요일을 입력해도 됩니다.
- 현재 날짜가 2024-05-13(Mon) 이므로 다음 월요일은 2024-05-20이 결과로 출력 됩니다.
날짜 형식의 문자열을 날짜 형식으로 변환
▶ 날짜 형식의 문자열을 값을 오라클 테이블의 날짜 컬럼과 연산하거나 날짜 컬럼에 입력하거나 비교하기 위해서는 날짜 형식으로 변환을 해 주어야 합니다.
- SELECT to_date(‘2024-05-13’, ‘YYYY-MM-DD’) + 1 FROM DUAL;
- 문자열 ‘2024-05-13’을 날짜 형식으로 변환한 다음 1일을 더 해 주었습니다.
- 결과는 날짜 데이터인 ‘2024-05-14 오전 12:00:00’이 결과로 출력 됩니다.
마무리
오라클 SELECT 쿼리 문에서 날짜를 연산해서 가져오면 프로그램 구문으로 별도로 날짜를 계산하지 않아도 되므로 프로그램 실행 속도 면에서도 장점이 될 수 있습니다.
오라클에서 날짜 데이터를 가져올 때 여기에서 소개한 내용을 꼭 참고해서 사용해 보시길 바랍니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
- [Oracle] 오라클 테이블 컬럼(Column) 추가, 삭제, 변경 방법(순서 변경)
- ORACLE의 SELECT 문에서 출력 되는 Row 수를 제한하는 방법 5가지
- ORACLE SELECT 구문의 GROUP BY SUM()에 대한 Total과 Sub Total 추가 방법
- 오라클 ORA-00904: invalid identifier 오류 발생 원인 및 오류 해결 방법
- 오라클 ORA-01789:query block has incorrect number of result columns 오류해결
- 오라클 ORA-01438 오류 발생 원인과 해결 방법
이 글이 도움이 되었기를 바랍니다. ^-^