MySQL에서는 MONTHNAME() 함수를 사용하여 월 번호(1~12)를 해당하는 월 이름으로 변환해 표시할 수 있습니다. 이 함수를 단독으로 사용하면 날짜 값이 필요하기 때문에, 숫자 형태의 월 번호를 먼저 날짜로 변환해 주는 STR_TO_DATE() 함수와 함께 사용하는 것이 핵심입니다.
기본 문법
SELECT MONTHNAME(STR_TO_DATE(yourColumnName, '%m')) AS anyVariableName FROM yourTableName;
여기서 STR_TO_DATE(yourColumnName, '%m')은 월 번호를 '%m' 포맷(두 자리 월)으로 해석하여 날짜 값으로 변환하고, 이 결과에 MONTHNAME()을 적용하면 'January', 'February' 같은 영문 월 이름이 반환됩니다.
예제 테이블 생성
개념을 이해하기 위해 먼저 테스트용 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE MonthDemo -> ( -> MonthNum INT -> ); Query OK, 0 rows affected (0.87 sec)
데이터 삽입
INSERT 명령어를 사용해 1월부터 12월까지의 월 번호를 테이블에 입력합니다.
mysql> INSERT INTO MonthDemo VALUES(1); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO MonthDemo VALUES(2); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO MonthDemo VALUES(3); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO MonthDemo VALUES(4); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO MonthDemo VALUES(5); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO MonthDemo VALUES(6); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO MonthDemo VALUES(7); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO MonthDemo VALUES(8); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO MonthDemo VALUES(9); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO MonthDemo VALUES(10); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO MonthDemo VALUES(11); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO MonthDemo VALUES(12); Query OK, 1 row affected (0.15 sec)
저장된 데이터 확인
SELECT 명령어로 테이블의 모든 레코드를 조회합니다.
mysql> SELECT *FROM MonthDemo;
실행 결과는 다음과 같습니다.
+------------+ | MonthNum | +------------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | | 12 | +------------+ 12 rows in set (0.00 sec)
월 이름으로 변환하기
이제 MONTHNAME()과 STR_TO_DATE() 함수를 조합하여 월 번호를 월 이름으로 변환하는 쿼리를 실행해 보겠습니다.
mysql> SELECT MONTHNAME(STR_TO_DATE(MonthNum, '%m')) AS MonthName FROM MonthDemo;
실행 결과는 다음과 같습니다.
+-----------+ | MonthName | +-----------+ | January | | February | | March | | April | | May | | June | | July | | August | | September | | October | | November | | December | +-----------+ 12 rows in set (0.00 sec)
추가 팁: 한글 월 이름이 필요한 경우
결과가 영문으로 반환되기 때문에, 한글 월 이름이 필요하다면 CASE 문이나 ELT() 함수를 활용할 수 있습니다. 예를 들어 ELT() 함수를 사용하면 다음과 같이 작성할 수 있습니다.
mysql> SELECT ELT(MonthNum, '1월','2월','3월','4월','5월','6월',
'7월','8월','9월','10월','11월','12월') AS MonthNameKo
FROM MonthDemo;이처럼 MySQL의 문자열 및 날짜 함수를 조합하면 월 번호를 원하는 형식의 월 이름으로 손쉽게 변환할 수 있습니다. 보고서나 대시보드를 만들 때 숫자보다 월 이름이 직관적으로 읽히므로 실무에서 매우 유용하게 활용됩니다.