Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 다음 달의 첫째 날과 마지막 날 구하는 방법

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() 함수를 조합하면 특정 월의 시작일과 종료일을 간편하게 계산할 수 있습니다.