MySQL에서 다음 달 1일 구하기
MySQL에서 다음 달의 첫째 날을 구하려면 DATE_FORMAT() 함수와 CURDATE() 함수, 그리고 INTERVAL> 키워드를 함께 사용하면 됩니다.
핵심 아이디어는 현재 날짜에 한 달을 더한 뒤, 날짜 형식을 '%Y-%m-01'로 지정하여 일(day) 부분을 강제로 '01'로 만드는 것입니다.
기본 쿼리
mysql> SELECT DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH, '%Y-%m-01') AS 'FIRST DAY OF NEXT MONTH'; +-------------------------+ | FIRST DAY OF NEXT MONTH | +-------------------------+ | 2017-11-01 | +-------------------------+ 1 row in set (0.00 sec)
쿼리 설명
- CURDATE(): 현재 날짜를 반환합니다. (예: 2017-10-15)
- + INTERVAL 1 MONTH: 현재 날짜에 정확히 한 달을 더합니다. (예: 2017-11-15)
- DATE_FORMAT(..., '%Y-%m-01'): 연도와 월은 그대로 유지하고, 일 부분을 항상 '01'로 고정하여 출력합니다.
다른 방법: LAST_DAY() 함수 활용
LAST_DAY() 함수를 사용하는 방법도 있습니다. 이번 달의 마지막 날에 하루를 더하면 자연스럽게 다음 달 1일이 됩니다.
mysql> SELECT LAST_DAY(CURDATE()) + INTERVAL 1 DAY AS 'FIRST DAY OF NEXT MONTH'; +-------------------------+ | FIRST DAY OF NEXT MONTH | +-------------------------+ | 2017-11-01 | +-------------------------+ 1 row in set (0.00 sec)
두 방법 모두 동일한 결과를 반환하지만, DATE_FORMAT() 방식이 더 직관적이고 널리 사용됩니다. 특정 테이블의 날짜 컬럼을 기준으로 다음 달 1일을 구해야 한다면 CURDATE() 대신 해당 컬럼명을 넣어주면 됩니다.