[Oracle] Last Day in Month (해당 연월 마지막 날짜 구하는 방법)

오라클에서 특정 월의 마지막 날짜를 구하는 방법을 아시나요? 특히 월별 보고서나 월말 통계를 계산할 때, 그 달의 마지막 날짜를 알아두면 많은 도움이 돼요. Oracle의 LAST_DAY 함수는 바로 이런 용도로 사용될 수 있죠. 여기서는 LAST_DAY 함수를 활용해 테이블 내 데이터에서 특정 월의 마지막 날짜를 쉽게 가져오는 방법을 안내해 드릴게요.

LAST_DAY 함수란?

Oracle에서 제공하는 LAST_DAY 함수는 입력된 날짜가 속한 월의 마지막 날짜를 반환해 주는 유용한 함수예요. 예를 들어, 2023-10-12와 같은 날짜가 입력되면, 2023년 10월의 마지막 날짜인 2023-10-31을 반환해 주죠. 이 함수는 DATE 형식의 데이터를 입력값으로 받아 사용됩니다.

LAST_DAY 함수의 기본 구문

아래는 LAST_DAY 함수를 사용할 때의 기본적인 구문이에요.

SELECT LAST_DAY(SYSDATE) FROM DUAL;

LAST_DAY
--------
21/01/31

날짜: 날짜형 데이터가 들어가는 부분이에요. 이 데이터는 DATE 형식이어야 하고, 보통 테이블의 날짜 컬럼에서 가져와요.

예제 쿼리

예를 들어, 직원 정보가 담긴 EMP 테이블에서 HIREDATE 컬럼에 저장된 각 직원의 입사 날짜를 기준으로 해당 월의 마지막 날짜를 조회하고 싶다면 다음과 같이 쿼리를 작성할 수 있어요.

SELECT DISTINCT
       HIREDATE,
       TO_CHAR(LAST_DAY(HIREDATE), 'YYYYMMDD') AS LAST_DAY_OF_MONTH
  FROM EMP;

HIREDATE LAST_DAY_OF_MONTH
-------- ----------------
81/02/22 19810228
81/09/28 19810930
81/08/09 19810831
03/06/17 20030630
03/01/23 20030131
81/02/20 19810228
96/11/17 19961130
01/02/04 20010228
81/03/12 19810331
87/05/23 20870531
91/01/05 19910131
99/09/06 19990930
07/12/01 20071231

13 rows selected.

쿼리 설명

  • HIREDATE: 입사 날짜가 저장된 컬럼이에요. DATE 형식으로 저장된 날짜 컬럼이라면 이 방식이 가장 간단해요.
  • LAST_DAY(HIREDATE): HIREDATE의 월 마지막 날짜를 가져오는 함수예요.
  • TO_CHAR(..., 'YYYYMMDD'): 결과를 'YYYYMMDD' 형식의 문자열로 변환하여 출력해요.
  • AS LAST_DAY_OF_MONTH: 조회 결과의 컬럼 이름을 LAST_DAY_OF_MONTH로 지정해 줘서 보기 쉽게 해줍니다.

예제 결과

만약 HIREDATE 컬럼에 2023-10-12와 같은 날짜가 있다면, 이 쿼리는 20231031이라는 결과를 반환해 줍니다.

HIREDATELAST_DAY_OF_MONTH
2023-10-1220231031
2023-09-0820230930

유용한 팁

  • LAST_DAY 함수는 월별 데이터 처리나 주기적인 보고서 작성에 특히 유용해요. 예를 들어, 월말 통계가 필요할 때 이 함수를 활용하면 정확한 데이터 분석을 쉽게 할 수 있답니다.
  • 특정 월의 첫 번째 날짜가 필요한 경우에는 TRUNC 함수를 결합해 사용할 수 있어요. 예를 들어, TRUNC(HIREDATE, 'MM')를 사용하면 해당 월의 첫 날짜를 구할 수 있어요.

Oracle SQL에서 LAST_DAY 함수를 활용하면 월별로 데이터 관리가 더 효율적이고 정확해져요.

SELECT HIREDATE, TRUNC (HIREDATE, 'MM') FROM EMP;

HIREDATE TRUNC (HIREDATE, 'MM')
-------- --------
91/01/05 91/01/01
99/09/06 99/09/01
01/02/04 01/02/01
03/06/17 03/06/01
81/03/12 81/03/01
07/12/01 07/12/01
81/02/20 81/02/01
81/02/22 81/02/01
81/09/28 81/09/01
81/08/09 81/08/01
87/05/23 87/05/01
81/03/12 81/03/01
03/01/23 03/01/01
96/11/17 96/11/01

14 rows selected.
이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗