MySQL 월 마지막일 구하기 LAST_DAY 사용 방법

입력한 월의 마지막 날짜를 알고 싶은 경우가 있습니다.

대부분의 월의 마지막 날은 30일 또는 31일입니다.

2월은 28일 또는 29일이 되는 경우도 있습니다.

위의 패턴으로 보면 월의 마지막 날은 28일부터 31일이 됩니다.

마지막 날을 취득하고 싶은 경우 if문이나 CASE문으로 3월은 31일 4월은 30일등 지정하는 것은 매우 번거롭습니다.

그리고 윤달이 생기는 2월을 계산하기 위해서는 연도까지 계산해야 합니다.

이러한 복잡한 것을 해결해 주는 것이 LAST_DAY 함수입니다.

LAST_DAY 함수에 날짜 형태로 값을 입력하면 입력한 달의 마지막 날짜를 반환합니다.

LAST_DAY 사용 방법을 먼저 보겠습니다.

LAST_DAY(날짜)

파라미터로 날짜를 입력합니다.

 

샘플을 보겠습니다.

SELECT LAST_DAY('2022-09-05');

> 2022-09-30

 

2022년 9월 5일 파라미터로 지정했습니다.

반환 값으로는 9월의 마지막 날을 받았습니다.

현재 날짜를 취득하는 NOW() 함수를 사용해 이번 달의 마지막 날을 취득할 수도 있습니다.

SELECT LAST_DAY(NOW());

> 2022-10-31

 

주의 점으로는 파라미터로 날짜를 전달할 때 유요한 날짜 값이 아닌 경우에는 반환값으로 NULL을 반환합니다.

예를 들어 2022년 13년 15일을 지정해보겠습니다.

SELECT LAST_DAY('2022-13-15');

> NULL

 

NULL이 반환되었습니다.

또는 날짜 형태가 아닌 월까지만 지정하는 경우에도 반환값으로 NULL을 반환합니다.

SELECT LAST_DAY('2022-12');

> NULL

 

만약 월까지만 있는 경우에는 임의의 날짜를 붙여서 LAST_DAY 함수에 파라미터를 전달하면 해결할 수 있습니다.

임의의 날짜를 붙이기 위해서 CONCAT을 사용하겠습니다.

파라미터 값으로 YYYY-MM 형태 이기 때문에 날짜를 -01로 붙이겠습니다.

날짜는 해당 월에 포함되는 날이면 어느 날이든 괜찮습니다.

하지만 가능 간편하게 작성하기 위해 1일을 많이 사용합니다.

샘플에서도 1일을 붙이겠습니다.

SELECT LAST_DAY(CONCAT('2022-12', '-01'));

> 2022-12-31

 

마지막 날이 출력되었습니다.

만약 날짜 포맷이 YYYYMM 형태인 202212 값으로 되어있다면 CONCAT으로 문자를 결합할 때 -을 사용하지 않으면 됩니다.

SELECT LAST_DAY(CONCAT('202212', '01'));

> 2022-12-31

 

입력한 달의 마지막 날이 반환되었습니다.

LAST_DAY 함수를 사용해 MySQL에서 해당 달의 마지막 날을 취득하는 방법을 알아봤습니다.

댓글