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

MySQL로 올해의 마지막 날 구하는 방법

MySQL에서 현재 연도의 마지막 날을 구하려면 LAST_DAY() 함수를 활용할 수 있습니다. 이 함수는 특정 날짜가 속한 달의 마지막 날을 반환하기 때문에, 현재 날짜를 12월로 조정한 뒤 적용하면 해당 연도의 마지막 날을 손쉽게 얻을 수 있습니다.

기본 문법

올해의 마지막 날을 구하는 쿼리 문법은 다음과 같습니다.

SELECT LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 12-MONTH(CURDATE()) MONTH));

이 쿼리의 동작 원리를 살펴보면 다음과 같습니다.

  • CURDATE(): 현재 날짜를 반환합니다.
  • MONTH(CURDATE()): 현재 월을 숫자로 추출합니다.
  • 12-MONTH(CURDATE()): 현재 월부터 12월까지 남은 개월 수를 계산합니다.
  • DATE_ADD(): 현재 날짜에 남은 개월 수를 더해 12월로 이동시킵니다.
  • LAST_DAY(): 해당 월(12월)의 마지막 날을 반환합니다.

실행 예제

실제로 위 문법을 실행하여 현재 연도의 마지막 날을 확인해 보겠습니다.

mysql> SELECT LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 12-MONTH(CURDATE()) MONTH));

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-------------------------------------------------------------------+
| LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 12-MONTH(CURDATE()) MONTH)) |
+-------------------------------------------------------------------+
| 2019-12-31                                                        |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)

참고: 대체 방법

MySQL 8.0 이상에서는 MAKEDATE() 함수를 사용하는 더 간결한 방법도 있습니다.

SELECT LAST_DAY(MAKEDATE(YEAR(CURDATE()), 365));

또는 문자열 포맷팅을 활용한 방법도 가능합니다.

SELECT STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-12-31'), '%Y-%m-%d');

어떤 방법을 사용하든 동일하게 YYYY-12-31 형식으로 올해의 마지막 날인 12월 31일을 정확히 구할 수 있습니다.