MySQL에서는 date_add() 함수를 활용하면 다음 달의 첫째 날과 마지막 날을 손쉽게 구할 수 있습니다. 이 글에서는 실제 쿼리 예제와 함께 그 사용법을 자세히 알아보겠습니다.
기본 문법
다음 달의 첫 번째 날짜와 마지막 날짜를 조회하는 기본 문법은 아래와 같습니다.
select
date_sub(
last_day(
date_add(now(), interval anyIntervalTime)
),
interval day(
last_day(
date_add(now(), interval anyIntervalTime)
)
)-1 DAY
) as anyVariableName,
last_day (
date_add(now(), anyIntervalTime)
)
as anyVariableName;
여기서 핵심은 date_add() 함수에 interval 1 month를 지정하여 현재 날짜로부터 한 달 뒤의 날짜를 먼저 계산한 후, last_day() 함수로 해당 월의 마지막 날을 구하고, 여기서 일(day) 수를 빼는 방식으로 첫째 날을 도출한다는 점입니다.
실제 쿼리 예제
위 문법을 실제로 적용하여 다음 달의 첫째 날과 마지막 날을 구해 보겠습니다.
mysql> select
-> date_sub(
-> last_day(
-> date_add(now(), interval 1 month)
-> ),
-> interval day(
-> last_day(
-> date_add(now(), interval 1 month)
-> )
-> )-1 DAY
-> ) as firstDayOfNextMonth,
->
-> last_day
-> (
-> date_add(now(), interval 1 month)
-> )
-> as lastDayOfNextMonth
->;
실행 결과
쿼리를 실행하면 다음 달의 첫째 날(firstDayOfNextMonth)과 마지막 날(lastDayOfNextMonth)이 정상적으로 출력됩니다.
+---------------------+--------------------+
| firstDayOfNextMonth | lastDayOfNextMonth |
+---------------------+--------------------+
| 2019-02-01 | 2019-02-28 |
+---------------------+--------------------+
1 row in set (0.00 sec)
결과를 보면 현재 날짜가 2019년 1월일 때, 다음 달인 2019년 2월의 첫째 날은 2019-02-01, 마지막 날은 2019-02-28로 정확하게 조회된 것을 확인할 수 있습니다. 이처럼 date_add(), last_day(), date_sub() 함수를 조합하면 특정 월의 시작일과 종료일을 간편하게 계산할 수 있습니다.