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

MySQL에서 월 번호로 월 이름 구하기 – MONTHNAME() 함수 완벽 가이드

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의 문자열 및 날짜 함수를 조합하면 월 번호를 원하는 형식의 월 이름으로 손쉽게 변환할 수 있습니다. 보고서나 대시보드를 만들 때 숫자보다 월 이름이 직관적으로 읽히므로 실무에서 매우 유용하게 활용됩니다.